1. 程式人生 > >FreeRTOS事件標誌組的學習

FreeRTOS事件標誌組的學習

1、背景

由於在搞ESP32的WIFI部分時,出現"wifi: Haven't to connect to a suitable AP now"的異常。分析完WIFI流程後,去除事件組後,正常執行,因此需要分析一下事件組哪裡學習不到位。

事件組的存在,影響我想達到的目標。

//	wifiBits = xEventGroupWaitBits(wifi_event_group, ST_ALLBITS,
//			false, false, portMAX_DELAY);
//	if((wifiBits & CONNECTED_BIT)==CONNECTED_BIT)
//	{
//		st = SM_getSongFile(tmp_url);
//	}

1.1 參考資料

2、基礎知識

事件標誌組——任務間的通訊和同步機制之一。

2.1 事件組對比全域性變數的優點

事件組對比全域性變數,在RTOS內有諸多好處是全域性變數所達不到的---這些好處還帶我去體驗

1、讓RTOS核心更有效地管理任務;用全域性變數時,任務超時等機制需要自己實現。

2、使用事件標誌組,不用擔心多工的訪問衝突;用全域性變數時,為了訪問共享要加鎖。

3、事件標誌組還可有效解決中斷服務程式和任務之間的同步問題。

可以看出,事件標誌組相當於RTOS給出的全域性標誌,特別好用的樣子

2.2 事件標誌組的實現

接下去就要將任務間或任務和中斷服務程式間的同步或通訊問題。

這就存在一個任務處於阻塞態,等待另一任務或中斷服務程式給他需要的事件標誌位置1,以使之從阻塞態轉為執行態。

2.2.1 事件標誌組的定義

 

 

3、靈活運用