STM8->EXTI
来源:互联网 发布:网一网络加速器官网 编辑:程序博客网 时间:2024/05/21 12:46
中断,特别是外部中断,是MCU实现复杂功能的重要手段。
中断源和向量:
所有I/O引脚都具有外部中断能力,每一个端口都有独立的中断向量以及独立的标志
各功能外设的中断
最多32个中断向量(入口地址已由硬件固定),最多40个外部中断源(4级可编程的软件嵌套优先级),其中的11个中断向量被分配为外部中断。
优先级及响应逻辑:
复位具有最高优先级,复位期间所有中断被禁止。
同一时间可以有几个中断排队等待处理时:
1. 最高软件优先级的中断被响应;(通过ITC->SPRx寄存器I1和I0配置每一个中断的软件优先级)
2. 如果几个排队的中断具有相同的软件优先级,那么最高硬件优先级的中断先响应。//中断的硬件优先级是唯一且互斥的
硬件中断优先级低->高:MAIN、IT4、IT3、IT2、IT1、IT0、TRAP和RESET。中断屏蔽可通过CC寄存器的位I1和位I0以及设置软件优先级的ITC->SPRx实现。PD7是最高优先级的硬件中断源TLI入口。
中断的管理
1、并发中断管理模式所有优先级都是3级,除响应RESET、TRAP、TLI中断,不可以被打断;
2、嵌套中断管理模式允许在中断程序中响应中断;一旦有中断的优先级低于3级该模式立即有效;
使用中断控制器ITC对各中断进行管理:
不可屏蔽的事件: RESET, TRAP;不可屏蔽的最高优先级的硬件中断TLI
不可屏蔽的中断: RESET,TLI和TRAP拥有最高的软件优先级来处理,不考虑CC寄存器的I1和I0的状态。
在TLI中断服务子程序中禁止使用TRAP指令,TLI中断可中断(除TRAP及RESET之外)3级软件中断,软件中断TRAP不能使处理器从停机Halt模式退出。
简单中断的配置和使用(以STM8L151为例):
GPIO_Init(KEY_PORT, KEY_Pin, GPIO_Mode_In_FL_IT);
EXTI_DeInit ();
EXTI_SetPinSensitivity(EXTI_Pin_4,EXTI_Trigger_Falling);
如果使用寄存器来配置中断:
寄存器EXTI->CR1功能定义
寄存器EXTI->CR2功能定义
使能中断
{asm("rim"); }== {enableInterrupts();}
其在stm8l15x.h文件中对中断的定义如下:
#define enableInterrupts() __enable_interrupt() /* enable interrupts */
#define disableInterrupts() __disable_interrupt() /* disable interrupts */
#define rim() __enable_interrupt() /* enable interrupts */
#define sim() __disable_interrupt() /* disable interrupts */
详细的32个中断向量定义:
#define FLASH_EOP_vector 0x03
#define FLASH_WR_PG_DIS_vector 0x03
#define DMA1_CH0_HT_vector 0x04
#define DMA1_CH0_TC_vector 0x04
#define DMA1_CH1_HT_vector 0x04
#define DMA1_CH1_TC_vector 0x04
#define DMA1_CH2_HT_vector 0x05
#define DMA1_CH2_TC_vector 0x05
#define DMA1_CH3_HT_vector 0x05
#define DMA1_CH3_TC_vector 0x05
#define RTC_ALARM_vector 0x06
#define RTC_WAKEUP_vector 0x06
#define EXTIE_vector 0x07
#define EXTIF_vector 0x07
#define EXTIPVD_vector 0x07
#define EXTIB_vector 0x08
#define EXTID_vector 0x09
#define EXTI0_vector 0x0A
#define EXTI1_vector 0x0B
#define EXTI2_vector 0x0C
#define EXTI3_vector 0x0D
#define EXTI4_vector 0x0E
#define EXTI5_vector 0x0F
#define EXTI6_vector 0x10
#define EXTI7_vector 0x11
#define CLK_CSS_vector 0x13
#define CLK_SWITCH_vector 0x13
#define TIM1_BIF_vector 0x13
#define COMP_EF1_vector 0x14
#define COMP_EF2_vector 0x14
#define TIM2_OVR_UIF_vector 0x15
#define TIM2_CAPCOM_BIF_vector 0x16
#define TIM2_CAPCOM_CC1IF_vector 0x16
#define TIM2_CAPCOM_CC2IF_vector 0x16
#define TIM2_CAPCOM_TIF_vector 0x16
#define TIM3_OVR_UIF_vector 0x17
#define TIM3_CAPCOM_BIF_vector 0x18
#define TIM3_CAPCOM_CC1IF_vector 0x18
#define TIM3_CAPCOM_CC2IF_vector 0x18
#define TIM3_CAPCOM_TIF_vector 0x18
#define TIM1_OVR_UIF_vector 0x19
#define TIM1_CAPCOM_CC1IF_vector 0x1A
#define TIM1_CAPCOM_CC2IF_vector 0x1A
#define TIM1_CAPCOM_CC3IF_vector 0x1A
#define TIM1_CAPCOM_CC4IF_vector 0x1A
#define TIM1_CAPCOM_COMIF_vector 0x1A
#define TIM1_CAPCOM_TIF_vector 0x1A
#define TIM4_TIF_vector 0x1B
#define TIM4_UIF_vector 0x1B
#define SPI_MODF_vector 0x1C
#define SPI_OVR_vector 0x1C
#define SPI_RXNE_vector 0x1C
#define SPI_TXE_vector 0x1C
#define SPI_WKUP_vector 0x1C
#define USART_T_TC_vector 0x1D
#define USART_T_TXE_vector 0x1D
#define USART_R_IDLE_vector 0x1E
#define USART_R_OR_vector 0x1E
#define USART_R_PE_vector 0x1E
#define USART_R_RXNE_vector 0x1E
#define I2C_ADD10_vector 0x1F
#define I2C_ADDR_vector 0x1F
#define I2C_AF_vector 0x1F
#define I2C_ARLO_vector 0x1F
#define I2C_BERR_vector 0x1F
#define I2C_BTF_vector 0x1F
#define I2C_OVR_vector 0x1F
#define I2C_RXNE_vector 0x1F
#define I2C_SB_vector 0x1F
#define I2C_STOPF_vector 0x1F
#define I2C_TXE_vector 0x1F
#define I2C_WUFH_vector 0x1F
- STM8->EXTI
- STM8外部引脚中断EXTI配置后,系统不断进入中断的问题
- STM8
- STM32M4 EXTI
- STM32->EXTI
- STM32之EXTI
- EXTI和NVIC初探
- STM32F407之EXTI
- STM32 EXTI的学习
- EXTI中断程序实例
- STM32----------NVIC和EXTI
- stm32 exti中断
- stm32之EXTI中断
- STM32之EXTI(中断)
- STM32CubeMX:EXTI操作
- 外部中断EXTI
- STM 32 EXTI
- EXTI外部中断
- 51nod1565 模糊搜索
- wampserve配置台式电脑,手机端访问pc端文件
- 关于关键词抽取的一些思考
- leetcode 4Sum(Java)
- Ue4是什么
- STM8->EXTI
- Linux中yum命令镜像源出错解决方案
- Android开源项目及资源查速表
- 数据结构探险——图篇
- 文章标题
- Android5.x+ 格式化外部存储(u盘, sdcard)的方法
- LeetCode 551:Student Attendance Record I (c++)
- Android-NFC模块学习(1)
- 【面试题】剑指offer13--在O(1)时间删除链表结点