【本篇文章的也可参考STM32中断文章http://t.csdn.cn/foF9I,结合着学习效果更好】
1.什么是中断
中断:让CPU打断正常运行的程序,转而去处理紧急的事件(程序),就叫中断中断执行机制,可简单概括为三步:
- 中断请求:外设产生中断请求(GPIO外部中断、定时器中断等)
- 响应中断:CPU停止执行当前程序,转而去执行中断处理程序(ISR)
- 退出中断:执行完毕,返回被打断的程序处,继续往下执行

2.中断优先级分组设置
ARM Cortex-M 使用了8 位宽的寄存器来配置中断的优先等级,这个寄存器就是中断优先级配置寄存器,但STM32只用了中断优先级配置寄存器的高4位 [7 : 4],所以STM32提供了最大16级的中断优先等级,STM32 的中断优先级可以分为抢占优先级和子优先级。
- 抢占优先级: 抢占优先级高的中断可以打断正在执行但抢占优先级低的中断
- 响应优先级:当同时发生具有相同抢占优先级的两个中断时,子优先级数值小的优先执行
【注意:中断优先级数值越小越优先】

中断优先级分组一共有 5 种分配方式,对应着中断优先级分组的 5 个组,FreeRTOS建议将优先级分组设为4【见链接】,通过调用函数HAL_NVIC_SetPriorityGrouping(NVIC_PRIORITYGROUP_4)即可完成设置(在HAL_Init中设置)
- 低于configMAX_SYSCALL_INTERRUPT_PRIORITY优先级的中断里才允许调用FreeRTOS 的API函数
- 建议将所有优先级位指定为抢占优先级位,方便FreeRTOS管理(HAL_NVIC_SetPriorityGrouping)
- 中断优先级数值越小越优先,任务优先级数值越大越优先

最低0.47元/天 解锁文章
526

被折叠的 条评论
为什么被折叠?



