簡介
臨界段指的是在程序運行過程中,禁止被打斷運行的代碼。
比如:在使用模擬I2C 時,操作IO口可能需要幾十個us,這段時間必須是嚴格的時序。
若在此期間,被其他原因(如中斷)打斷,那後果可想而知。
所以,這種禁止被打斷的代碼段,叫做臨界段,
那臨界段代碼保護函數,指的就是可以保護此段代碼不被打斷的函數
函數
taskENTER_CRITICAL()
taskEXIT_CRITICAL()
上面兩個是在rtos創建的任務中使用的代碼,
taskENTER_CRITICAL_FROM_ISR()
taskEXIT_CRITICAL_FROM_ISR()
上面兩個是在中斷函數中使用的代碼
例子
/* USER CODE END Header_blink02 */
void blink02(void const * argument)
{
/* USER CODE BEGIN blink02 */
/* Infinite loop */
for(;;)
{
taskENTER_CRITICAL();
......
taskEXIT_CRITICAL();
}
/* USER CODE END blink02 */
}