爱收集资源网

实现临界区保护

网络整理 2023-09-28 19:04

taskENTER_CRITICAL_FROM_ISR是FreeRTOS中的宏定义,在中断服务函数中使用。它用于步入临界区,并保护临界区内的数据不会被其他中断打断或更改。taskENTER_CRITICAL_FROM_ISR的主要作用是将中断服务函数中的`portDISABLE_INTERRUPTS()`宏定义替换为`taskENTER_CRITICAL_FROM_ISR()`,进而保证临界区内的代码不会被其他中断打断。因为中断服务函数中不能直接调用FreeRTOS的API函数,因而须要使用taskENTER_CRITICAL_FROM_ISR宏定义来实现临界区保护。这个宏定义会将CPSR寄存器的IRQ位清零,因而严禁其他中断打断当前中断服务函数。taskENTER_CRITICAL_FROM_ISR的使用示例如下:```voidEXTI_IRQHandler(void){//步入临界区taskENTER_CRITICAL_FROM_ISR();//执行须要保护的代码段//退出临界区taskEXIT_CRITICAL_FROM_ISR();}```须要注意的是,taskENTER_CRITICAL_FROM_ISR宏定义只能用于中断服务函数中,不能用于任务函数中。假如须要在任务函数中实现临界区保护,可以使用taskENTER_CRITICAL和taskEXIT_CRITICAL宏定义。

中断函数可重入是什么
上一篇:UGEE手写板驱动安装及使用,一步到位 下一篇:没有了
相关文章