Cortex-M中断及FreeRTOS中断优先级配置原理
关注+星标公众号,不错过精彩内容
作者 | strongerHuang
微信公众号 | 嵌入式专栏
如果CPU没有中断,你能想象是什么情况吗?
就是一个while循环,且不能中断处理及时的任务,更别说有现在的RTOS了(RTOS也是需要中断才能实现)。
下面就来说说关于Cortex-M的中断,及FreeRTOS中断优先级配置原理。
1关于Cortex-M3处理器
写本文之前,先写点相关的扩展内容,本文结合内核为Cortex-M3的STM32来讲述。
Cortex-M3只是STM32F1的一个内核。反过来说STM32F1是在Cortex-M3基础上增加了一些外设(如:USART、AD等)的芯片。
2Cortex-M中断控制
NVIC:Nested Vectored Interrupt Controller,即嵌套向量中断控制器。
STM32中NVIC我们比较熟悉,编程的时候使用中断都会对NVIC进行配置。
而STM32F1中的NVIC是属于Cortex-M3中的一部分,而不是STM32增加的外设。
NVIC向量中断控制器是Cortex‐M3不可分离的一部分,它与 CM3 内核的逻辑紧密耦合,有一部分甚至水乳交融在一起。
所以,NVIC相关的寄存器位于Cortex-M手册中。讲述STM32的中断控制,还得从Cortex-M3的NVIC讲起,
2.中断和异常区别
所以:
1.站在Cortex‐M3内核角度,像STM32中USART这类中断,属于外部中断。
2.站在STM32角度,EXTI外部引脚中断才属于中断。
3.优先级
提示:
1.STM32中断优先级数值越小,优先级越大。
2.优先级分组:Cortex-M3,M4具有分组功能,即存在抢占优先级和响应优先级,如下图:
而有的内核就没有,如Cortex-M0就没有。
3.参考资料
可以参看《Cortex-M3权威指南》
STM32的内核编程手册:
http://www.st.com/stonline/products/literature/pm/15491.pdf
3FreeRTOS中断优先级配置
本节内容讲述一下FreeRTOS最大中断优先级配置问题,也就是FreeRTOSConfig.h配置文件中的:
configMAX_SYSCALL_INTERRUPT_PRIORITY
你们知道配置数值的含义吗?这里就需要结合NVIC相关的内容来理解。
关于FreeRTOS最大优先级配置的内容可以参考:
https://www.freertos.org/RTOS-Cortex-M3-M4.html
后台回复『Cortex-M』『STM32』『FreeRTOS』阅读更多相关文章。
点击“阅读原文”查看更多分享,欢迎点分享、收藏、点赞、在看。