»
(008)CubeIDE实现USB外设*
(018)C99 的指针*
(019)C99 只有值赋值,没有move*
(022)POSIX线程库pthread的同步锁*
(023)POSIX线程库pthread的多线程*
(027)C99标准库中的计时与等待 *
(028)C语言中的高精度计算库GMP *
(029)C语言中的Web服务*
(030)C语言中的字符转码ICU*
(031)从几个方面显然C语言比C++效率高*
🕹️(003)FreeRTOS临界区ENTER_CRITICAL
taskENTER_CRITICAL();
...//代码临界区
taskEXIT_CRITICAL();
当任务进入临界区时,代码的执行不会被中断打断。
FreeRTOS 通过禁用中断或设置中断优先级屏蔽来确保进入临界区的代码不可被中断:
taskENTER_CRITICAL()的中断优先级等于最大系统调用的中断优先级(configMAX_SYSCALL_INTERRUPT_PRIORITY),FreeRTOS通常会禁用所有高于configMAX_SYSCALL_INTERRUPT_PRIORITY的中断。
也就是:进入taskENTER_CRITICAL()后,所有高于configMAX_SYSCALL_INTERRUPT_PRIORITY的中断都会被屏蔽。
taskENTER_CRITICAL()函数挡住的中断只会被挂起或延迟,一旦退出临界区,先前被延迟的中断将按照其优先级顺序被处理。
注意:taskENTER_CRITICAL()会延迟低优先级的中断的请求过程,taskENTER_CRITICAL()