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 */
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章