天天看點

STM32CubeMX學習筆記——FreeRTOS臨界段保護簡介函數

簡介

臨界段指的是在程式運作過程中,禁止被打斷運作的代碼。

比如:在使用模拟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 */
}
           

繼續閱讀