1.NVIC优先级分组
分为抢占优先级和相应优先级,
抢占优先级高的可以中断嵌套,相应优先级高的可以有限排队,抢占优先级和相应优先级均相同按中断号排队;
2.EXTI外部中断
引脚电平变化,申请中断;
支持触发的类型:上升沿/下降沿/双边沿/软件触发;
支持所有GPIO口,相同的Pin不能同时触发中断,例如:PA1,PB1,PC1,只能同时选一个
触发响应方式:中断响应/事件响应
中断响应:申请中断,让CPU执行中断程序
事件响应:引脚变化,触发其他外设操作;
外部中断的EXTI9~EXTI5 会触发同一个中断函数 和 外部中断的EXTI15~EXTI0会触发同一个中断函数,根据标志位区别是哪个触发中断;
AFIO主要用于引脚复用功能的选择和重定义
STM32中,AFIO主要完成两个任务:1.复用功能引脚映射;2.中断引脚选择;
3.标准库程序---对射红外传感器记次
第一步先初始化中断函数
中断函数内执行中断代码
主函数查看和清楚标志位用上面两个函数
FlagStatus EXTI_GetFlagStatus(uint32_t EXTI_Line);
void EXTI_ClearFlag(uint32_t EXTI_Line);
中断函数查看和清除标志位用下面两个函数
ITStatus EXTI_GetITStatus(uint32_t EXTI_Line);
void EXTI_ClearITPendingBit(uint32_t EXTI_Line);
软件触发中断用
void EXTI_GenerateSWInterrupt(uint32_t EXTI_Line);
4.HAL库生成代码
原则对应型号
选择对应GPIO(此处PB14为红外对射开关产生外部中断,PB11为LED产生中断后,翻转IO口)
选择中断线
设置时钟
设置文件路径,文件名称,文件类型
生成文件代码
调用回调函数,把需要中断执行的内容写在中断回调函数
文件中自动生成的中断函数
在上面的函数中再次调用的中断回调函数,把中断回调函数写在MAIN中即可