1. 程式人生 > >STM32CubeMX學習筆記——FreeRTOS_任務建立與刪除

STM32CubeMX學習筆記——FreeRTOS_任務建立與刪除

STM32CubeMX學習筆記——FreeRTOS_任務建立與刪除

Github

https://github.com/HaHaHaHaHaGe/Planof2019_half/tree/master/Course_Project/FreeRTOS/Class01_CreateTask

簡介

在STM32CubeMX上配置FreeRTOS非常的簡單,幾乎不需要做任何操作,只需要勾選
在這裡插入圖片描述
移植FreeRTOS就成功了,關於在非Cube上的RTOS配置檔案內的相關內容,也在下方的Configuration欄中給好了
在這裡插入圖片描述


所有的配置都可以在這裡完成

任務建立

有別於在沒有使用Cube下的建立方式,在Cube中它專門提供了視覺化的建立方式,並且增加了中間檔案cmsis_os.c將freertos中提供的方法進行了再一次的封裝(猜測可能是為了支援更多的OS吧)

視覺化建立方式

在這裡插入圖片描述
在Tasks and Queues中可以點選Add按鈕新增新的任務
在這裡插入圖片描述
1、任務名字
2、任務優先順序(因為增加了一個層級結構,導致不再是以數字來決定優先順序了)
3、棧大小
4、函式名(有別於第一條,第一條是字串格式的,這條是定義程式碼中的函式名字)
5、程式碼生成設定(生成與否?還是生成弱函式——希望自行編寫函式的選As External,希望自動生成的選Default)
6、傳入的資料/指標,一般為NULL,有希望傳入的資料可以修改
7、建立方式(動態或靜態,一般動態,很少使用靜態方式)

程式碼建立方式

osThreadId LED_Blink2Handle;
osThreadDef(LED_Blink2, Blink_PB1, osPriorityNormal, 0, 128);
LED_Blink2Handle = osThreadCreate(osThread(LED_Blink2), NULL);

程式碼建立也很簡單,實際上osThreadCreate對xTaskCreate進行了封裝,而osThreadDef與osThread都是巨集定義,用於描述初始化變數的,通過預編譯器巧妙的生成了函式名(字串)與相關初始化變數賦給了函式osThreadCreate

LED_Blink2:希望生成的中間結構體名稱也會被預編譯器生成同名的字串
Blink_PB1:真實的函式名稱
osPriorityNormal:優先順序
0:最大例項化個數(估計是以後會用到,目前這個變數還沒什麼作用,預設0就好)
128:棧空間

任務刪除

vTaskDelete(LED_Blink2Handle);

沒什麼可說的,輸入控制代碼 直接刪除,
需要注意的是,如果想刪除自身的話,輸入NULL即可