参考资料:《正点原子STM32F4 FreeRTOS开发手册_V1.1》《野火FreeRTOS 内核实现与应用开发实战—基于STM32》
Cortex-M中断
Cortex-M4内核提供了一个NVIC,这个NVIC在STM32里面是由四个bit组成的,可以配置成5种不同的中断分组,即不同的抢占优先级和亚优先级,在移植FreeRTOS的时候要求4bit全部设置成抢占优先级


FreeRTOS的中断
其实FreeRTOS本身并没有中断,FreeRTOS的中断是依赖于MCU内核的中断的,在STM32中也就是Cortex-M的中断。
FreeRTOS会利用Cortex-M的中断分组,但是会设置一个“免打扰”模式。在上文中我们提到,如果要是用FreeRTOS的话我们是把中断的4bit全用在了抢占优先级,也就是2^4=16个中断优先级(0~15级)。而“免打扰模式”就是设置高位的几个优先级,这个中断是不会被关闭的,而低位的优先级是会被全部被关闭的

设置这个打断的就是粉色下划线的部分,图中设置的是5,那么0 ~ 4优先级的是不会被关闭的,而5 ~ 15优先级的中断是可以被FreeRTOS关闭的,即使满足了中断触发条件也是不会触发中断的,所以如果是处理一些不能被普通中断打断的事务的时候,可以选择把中断关闭,然后再处理。<

本文详细介绍了STM32中的Cortex-M4中断和NVIC,并探讨了FreeRTOS如何利用中断分组设置‘免打扰模式’。在FreeRTOS中,中断被配置为抢占优先级,其中高位优先级不受系统关闭影响,低位优先级则可能被禁用。portDISABLE_INTERRUPTS和portENABLE_INTERRUPTS函数用于控制中断的开启和关闭,以确保在处理关键任务时避免不必要的中断。
最低0.47元/天 解锁文章
1306

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



