临界段代码保护简介
临界区是指那些必须完整运行的区域,在临界区中的代码必须完整运行,不能被打断。
适合场合
- 外设:需要严格按照时序初始化的外设,比如IIC,SPI等等
- 系统:系统自身需求
- 用户:用户需求
临界段代码保护函数基础
FreeRTOS 在进出临界区的时候,通过关闭和打开受 FreeRTOS 管理的中断,以保护临界区中的代码。(临界段总结就是开关中断)
两种临界区保护函数使用示例如下,中断需要定义一个值保存中断屏蔽寄存器之前的值,在后续退出临界区后将寄存器值设置回去。
注:临界区保护函数都是成对出现(有关就有开),且我们应该尽量保持临界区耗时短一点。
临界段源码的分析,最终的操作其实就是进入临界区时关闭中断,并且进行计算进入次数;同理,退出临界段则是打开中断,并且判断是否退出次数是否和进入次数一样,一样才可以退出。