(三) STM32 外部中断的原理与应用( 六 )


EXTI4_IRQHandler
EXTI9_5_IRQHandler
EXTI15_10_IRQHandler

在编写中断服务函数的时候会经常使用到两个函数实现下面的功能:
(1)判断某个中断线上的中断是否发生(标志位是否置位)一般使用在中断服务函数的开头 , 判断中断是否发生:

ITStatus EXTI_GetITStatus(uint32_t EXTI_Line);

(2)清除某个中断线上的中断标志位 , 这个函数一般应用在中断服务函数结束之前 , 清除中断标志位:

void EXTI_ClearITPendingBit(uint32_t EXTI_Line)

中断服务函数的格式可以说是一个套路的 , 常用的中断服务函数格式为:

void EXTI9_5_IRQHandler(void){
\tif(EXTI_GetITStatus(EXTI_Line8)!=RESET)//判断线8上的中断是否发生
\t{
\t\t…中断逻辑
\t\tEXTI_ClearITPendingBit(EXTI_Line8);//清除LINE上的中断标志位
\t

另外 , 固件库还提供了两个函数用来判断外部中断状态和清除外部状态标志位 , 即EXTI_GetFlagStatus()和EXTI_ClearFlag()其作用和前面两个函数的作用类似 , 只是在EXTI_GetITStatus()中会先判断这种中断是否使能 , 使能了才去判断中断标志位 , 而EXTI_GetFlagStatus()直接用来判断状态标志位 。

推荐阅读