代码的临界段

代码的临界段也称为临界区,指处理时不可分割的代码。
一旦这部分代码开始执行,则不允许任何中断打入。

stm32代码临界保护是指在使用FreeRTOS操作系统时,保护临界代码不被打断的一种机制。当进入临界代码时,FreeRTOS会停止对其他任务的调度,关闭中断,以保证临界代码的正常执行。这个过程类似于拥有一个保护伞,直到任务退出临界区才会恢复中断响应。 在stm32代码中,使用portDISABLE_INTERRUPTS()函数来实现关闭中断的功能。同时,使用uxCriticalNesting变量来记录临界区嵌套的次数。只有当uxCriticalNesting等于0时,才可以开启中断。这样可以确保在有多个临界代码保护的情况下,不会因为一个临界代码保护退出而打开中断,影响其他的临界代码保护。只有当所有临界代码保护退出后,中断才会被打开。 在stm32中,中断服务函数也可以进入临界区。调用taskENTER_CRITICAL_FROM_ISR()函数可以实现这一功能。该函数的返回值ulReturn需要保存,以便在退出临界区时写入。通过设置BASEPRI寄存器的值为configMAX_SYSCALL_INTERRUPT_PRIORITY,可以达到关闭中断的效果。在退出临界区时,将保存的ulReturn值重新写入BASEPRI寄存器,以恢复中断。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [FreeRTOS临界代码保护[STM32]](https://blog.youkuaiyun.com/m0_63741844/article/details/124067707)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值