補充:上節漏掉一個知識點:任務中的延時要用vTaskDelay,這是當前線程延時函數,不要用delay。delay是整個系統延時函數。
繼續上節的延伸,從上篇文章的例子中可以看出兩個任務是讓兩個LED閃爍,創建的兩個任務task1和task2極其相似,除了傳遞的參數LED_PIN引腳不一樣,還有就是LED燈閃爍的時間不一樣vTaskDelay(1000)。
于是可以想到給任務傳遞兩個參數,LEDpin和vTaskDelay。 先理解以下知識:
結構體:是存放不同類型數據的容器。例如:
初始化結構體成員變量的方法有好幾種可以參考此連接:(58條消息) C語言結構體初始化的四種方法_ericbars的博客-CSDN博客_結構體初始化 typedef:給類型起別名。例如
結構體“.”和“->”的區別: .
左邊是一個結構體變量;->左邊是一個指向結構體的指針。例如
理解了以上知識點后,傳遞多個參數是將參數定義為結構體成員變量,示例如下:
注意:
1)Arduino變量初始化要放在setup里,放到外邊,有可能會出錯。
2)全局變量內存的值不會刪除。局部變量的內存值在setup運行完后,會自動刪除,所以如果將聲明結構體變量LEDFLASH led1, led2;放到setup里,傳遞的參數每次都是隨機的,參數值會出錯。
3)freertos 語法規定的創建任務的函數參數必須是輸入void空指針 ,然后無返回的void類型。
審核編輯:劉清
-
FreeRTOS
+關注
關注
12文章
483瀏覽量
62006 -
Arduino
+關注
關注
187文章
6464瀏覽量
186648 -
ESP32
+關注
關注
18文章
958瀏覽量
17090
原文標題:FreeRTOS給任務傳遞多個參數(ESP32)
文章出處:【微信號:硬件會,微信公眾號:硬件會】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論