FreeRTOS臨界區相關函數

  1. taskENTER_CRITICAL()和 taskEXIT_CRITICAL()
    臨界區保護代碼實際上就是在taskENTER_CRITICAL()和taskEXIT_CRITICAL()無法被中斷,常用在時序讀取一些傳感器和芯片上(比如flash和eeprom上)。
taskENTER_CRITICAL()
//此處爲保護,不能被中斷代碼
taskEXIT_CRITICAL()

注意:臨界區代碼不宜過長,否則會影響系統響應
3. taskENTER_CRITICAL_FROM_ISR()和taskEXIT_CRITICAL_FROM_ISR()

這一對臨界區代碼保護函數用在中斷服務函數中,但是中斷函數優先級不能用在高於configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY。

void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
	uint32_t status_value;
	if(htim==(&TIM3_Handler))
	{
		status_value=taskENTER_CRITICAL_FROM_ISR(); 
		total_num+=1;
		printf("float_num 的值爲: %d\r\n",total_num);
		taskEXIT_CRITICAL_FROM_ISR(status_value);  
	}
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章