一、文檔背景
在嵌入式系統(tǒng)開發(fā)中,實時操作系統(tǒng)(RTOS)是一種用于管理任務調(diào)度、資源共享和同步的軟件。 FreeRTOS是一個輕量級、可移植的RTOS內(nèi)核,因其易用性和可靠性而廣受歡迎。
CMSIS(Cortex Microcontroller Software Interface Standard)是ARM公司提供的標準接口,用于簡化ARM Cortex-M微控制器開發(fā)。 CMSIS提供了一系列硬件抽象層(HAL)和中間件,可幫助開發(fā)人員輕松地將應用程序移植到不同的ARM Cortex-M微控制器平臺。
二、 解決的問題或者進行問題分析
● 簡介:概述移植FreeRTOS的過程。
● 配置CMSIS接口:如何配置CMSIS接口以支持FreeRTOS。
● 移植FreeRTOS內(nèi)核:介紹如何將FreeRTOS內(nèi)核移植到STM32F769開發(fā)板。
● 創(chuàng)建任務:如何創(chuàng)建FreeRTOS任務。
三、 如何應用CMSIS接口在STM32F769開發(fā)板實現(xiàn)FreeRTOS的移植
1. 打開STM32CubeMX軟件,選擇“ACCESS TO MCU ...”,如下圖3-1所示:
![](/Uploads/2024-11-14/67356ab45a25c.png)
圖3-1
2. 選中開發(fā)板對應的處理器的名稱,選擇“Start Project...”,如下圖3-2所示:
![](/Uploads/2024-11-14/67356ac2a5f95.png)
圖3-2
3. 選擇“Project Manager”,輸入項目名稱,并選擇工具鏈名稱,如下圖3-3所示:
![](/Uploads/2024-11-14/67356ace0bf14.png)
圖3-3
4. 由于在項目中需要用于LED燈的控制,打開發(fā)板關(guān)于LED的原理圖,如下圖3-4所示:
![](/Uploads/2024-11-14/67356ad9d4103.png)
圖3-4
5. 根據(jù)LED燈的原理圖配置好,LED燈的GPIO口,如下圖3-5所示:
![](/Uploads/2024-11-14/67356ae06d61b.png)
圖3-5
6. 設置晶振的類型,如下圖3-6所示:
![](/Uploads/2024-11-14/67356aeb3c436.png)
圖3-6
7. 選擇“FreeRTOS”,配置好接口,再選擇“Tasks and Queues”,添加任務,如下圖3-7所示:
![](/Uploads/2024-11-14/67356af538fb6.png)
圖3-7
8. 添加GreenLEDTask與BlueLEDTask兩個任務,如下圖3-8所示:
![](/Uploads/2024-11-14/67356b02e8e65.png)
圖3-8
9. 把“Timebase Source”修改為TIM6,如下圖3-9所示:
![](/Uploads/2024-11-14/67356b0e4f7ed.png)
圖3-9
10. 配置好系統(tǒng)時鐘,如下圖3-10所示:
![](/Uploads/2024-11-14/67356b183b8a5.png)
圖3-10
11. 選擇“GENERATE CODE”生成項目生成并打開項目,如下圖3-11所示:
![](/Uploads/2024-11-14/67356b2536697.png)
圖3-11
12. 新創(chuàng)建Board_LED.c與Board_LED.h文件,并修改Main與gpio文件內(nèi)容,Board_LED.c文件部分代碼如圖3-12所示:
![](/Uploads/2024-11-14/67356b32b5265.png)
圖3-12
13. 修改freertos.c文件中GreenLED與BlueLED對應任務函數(shù)的內(nèi)容,如下圖3-13所示:
![](/Uploads/2024-11-14/67356b3eb2973.png)
圖3-13
四、驗證FreeRTOS已移植成功
編譯工程,并把工程下載到STM32F769開發(fā)板上,觀察綠燈與藍燈的閃爍情況。
五、討論分析
1、找不到相關(guān)的頭文件,如圖5-1所示:
![](/Uploads/2024-11-14/67356b49f2fd4.png)
圖5-1
解決方法:
確認相關(guān)頭文件的路徑,把相關(guān)的頭文件添加到項目中,如圖5-2所示:
![](/Uploads/2024-11-14/67356b5353280.png)
圖5-2
六、結(jié)論
使用CMSIS接口移植FreeRTOS可以進一步簡化移植過程并提高代碼的可移植性,創(chuàng)建更強大、更可靠和更高效的應用程序。