一、文檔背景
在嵌入式系統(tǒng)開發(fā)中,實(shí)時(shí)操作系統(tǒng)(RTOS)是一種用于管理任務(wù)調(diào)度、資源共享和同步的軟件。 FreeRTOS是一個(gè)輕量級(jí)、可移植的RTOS內(nèi)核,因其易用性和可靠性而廣受歡迎。
CMSIS(Cortex Microcontroller Software Interface Standard)是ARM公司提供的標(biāo)準(zhǔn)接口,用于簡(jiǎn)化ARM Cortex-M微控制器開發(fā)。 CMSIS提供了一系列硬件抽象層(HAL)和中間件,可幫助開發(fā)人員輕松地將應(yīng)用程序移植到不同的ARM Cortex-M微控制器平臺(tái)。
二、 解決的問(wèn)題或者進(jìn)行問(wèn)題分析
● 簡(jiǎn)介:概述移植FreeRTOS的過(guò)程。
● 配置CMSIS接口:如何配置CMSIS接口以支持FreeRTOS。
● 移植FreeRTOS內(nèi)核:介紹如何將FreeRTOS內(nèi)核移植到STM32F769開發(fā)板。
● 創(chuàng)建任務(wù):如何創(chuàng)建FreeRTOS任務(wù)。
三、 如何應(yīng)用CMSIS接口在STM32F769開發(fā)板實(shí)現(xiàn)FreeRTOS的移植
1. 打開STM32CubeMX軟件,選擇“ACCESS TO MCU ...”,如下圖3-1所示:

圖3-1
2. 選中開發(fā)板對(duì)應(yīng)的處理器的名稱,選擇“Start Project...”,如下圖3-2所示:

圖3-2
3. 選擇“Project Manager”,輸入項(xiàng)目名稱,并選擇工具鏈名稱,如下圖3-3所示:

圖3-3
4. 由于在項(xiàng)目中需要用于LED燈的控制,打開發(fā)板關(guān)于LED的原理圖,如下圖3-4所示:

圖3-4
5. 根據(jù)LED燈的原理圖配置好,LED燈的GPIO口,如下圖3-5所示:

圖3-5
6. 設(shè)置晶振的類型,如下圖3-6所示:

圖3-6
7. 選擇“FreeRTOS”,配置好接口,再選擇“Tasks and Queues”,添加任務(wù),如下圖3-7所示:

圖3-7
8. 添加GreenLEDTask與BlueLEDTask兩個(gè)任務(wù),如下圖3-8所示:

圖3-8
9. 把“Timebase Source”修改為TIM6,如下圖3-9所示:

圖3-9
10. 配置好系統(tǒng)時(shí)鐘,如下圖3-10所示:

圖3-10
11. 選擇“GENERATE CODE”生成項(xiàng)目生成并打開項(xiàng)目,如下圖3-11所示:

圖3-11
12. 新創(chuàng)建Board_LED.c與Board_LED.h文件,并修改Main與gpio文件內(nèi)容,Board_LED.c文件部分代碼如圖3-12所示:

圖3-12
13. 修改freertos.c文件中GreenLED與BlueLED對(duì)應(yīng)任務(wù)函數(shù)的內(nèi)容,如下圖3-13所示:

圖3-13
四、驗(yàn)證FreeRTOS已移植成功
編譯工程,并把工程下載到STM32F769開發(fā)板上,觀察綠燈與藍(lán)燈的閃爍情況。
五、討論分析
1、找不到相關(guān)的頭文件,如圖5-1所示:

圖5-1
解決方法:
確認(rèn)相關(guān)頭文件的路徑,把相關(guān)的頭文件添加到項(xiàng)目中,如圖5-2所示:

圖5-2
六、結(jié)論
使用CMSIS接口移植FreeRTOS可以進(jìn)一步簡(jiǎn)化移植過(guò)程并提高代碼的可移植性,創(chuàng)建更強(qiáng)大、更可靠和更高效的應(yīng)用程序。