感謝ST法國CubeMX團隊的支持,RT-Thread Nano已成功上線ST CubeMX。本文將詳細介紹如何快速上手RT-Thread Nano,并指導大家在ST CubeMX上進行項目配置和開發。一起來看看吧!
一、準備工作
軟件準備:
STM32 CubeMX_v6.11.0 以上版本
Keil MDK
硬件準備:
STM32 開發板(Cortex-M系列,這里我們以STM32F411RCT6 芯片作為演示)
二、安裝 RT-Thread Nano v4.1.1 軟件包
首先打開 STM32 CubeMX 軟件,進入主頁面后找到右側的嵌入式軟件包選項(Install or remove embedded software packages),點擊 [ INSALL / REMOVE ] :
在彈出的 Embedded Software Packages Manager 界面的上方導航欄中找到 RT-Thread 廠商 —> [ RealThread ] ,展開 X-CUBE-RT-Thread_Nano ,勾選中 RT-Thread Software Components (Size: 5.50 MB) ,并且點擊 Install :
同意條款并點擊 Finish :
注:此處如果沒有找到 RealThread 廠商選項,可點擊下方 Refresh 按鈕更新資源包索引后開始下載,下載成功后 RT-Thread Software Components 4.1.1 呈深綠色方形顯示,關閉窗口后開始工程創建。
三、創建 STM32 CubeMX 項目工程
創建工程可以選擇基于 MCU 或 Board,這里我們以創建 MCU 作為教學演示,點擊 ACCESS TO MCU SELECTOR ,在左上角的 Commercial Part Number 中輸入芯片型號,這里我的芯片型號為 STM32F411RCT6 ,選中對應MCU后點擊右上角 Start Project 。
四、芯片配置
首先勾選 RT-Thread Nano v4.1.1 軟件包,依次點擊 Software Packs-> Select Components,并找到 RealThread.X-CUBE-RT-Thread_Nano 4.1.1 一欄,根據開發需求勾選配置項,其中 kernel 和 libcpu 為必選項,這里我們選擇 kernel、shell 和 ibcpu 三個配置項后點擊 OK:
在左側導航欄中找到 RT-Thread Nano 軟件包,同時在 Mode 一欄中使能 RTOS RT-Thread,接著我們在 Parameter Settings 中進行內核配置,這一步我們保持默認即可,同時往下翻找到 Finsh Configuration,使能 Finsh組件:
為了給 Finsh 組件提供串口設備,需要我們勾選一個串口,點擊左側功能欄 Connectivity —> USART1,設置串口模式為異步:
選擇 System Core —>SYS,將 Debug 選項配置為 Serial Wire:
在 RT-Thread 中重新定義了`HardFault_Handler`, `PendSV_Handler`, `SysTick_Handler`中斷函數。為避免重復定義,在生成項目之前,請取消選擇中斷配置中的三個中斷函數(對應注釋了的選項`Hard fault interrupt`、`Pendable request`、`Time base: System tick timer`)
點擊 Project Manager,填寫項目名稱,并修改 Toolchain / IDE 為 MDK-ARM,最后生成工程文件(在點擊生成工程后會提示 RTOS 時基源的修改警告,點擊 Yes 即可)
五、工程配置
1.概述
打開 MDK 工程后,工程目錄下會生成幾個 Middlewares Group,如下所示:
2.Finsh組件配置
打開 Middlewares/RT-Thread/RTOS/kernel 目錄下的 board.c 文件,修改 uart_init() 函數中串口號,該串口號默認為 USART1,需要根據實際在 CubeMX 中配置的串口進行修改
3.主函數配置
在 main.c 中包含頭文件 `#include`,同時在 main 函數的 while(1) 中定義延時,以便 Finsh 和其他線程得到系統調度:
4.觀察現象
在 MDK 中燒錄程序后打開串口助手,復位開發板查看終端運行情況:
到這里,RT-Thread Nano v4.1.1 就成功運行起來了。
六、內存堆初始化
系統內存堆的初始化是通過 board.c 中的 rt_hw_board_init() 函數實現的,如果需要啟用內存堆可通過宏定義 RT_USING_HEAP 實現,RT-Thread Nano 默認不開啟內存堆功能。一旦 RT_USING_HEAP 被啟用,系統會默認使用一個數組作為堆,堆的其實地址和結束地址作為參數傳遞給堆初始化函數 rt_system_heap_init(),該函數在 rt_hw_board_init() 中調用。
如果不希望使用數組作為動態內存堆,可以使用 RAM 的 ZI 段的末尾作為 HEAP 的起始地址(需要確保它與鏈接腳本對應上),并使用RAM的結束地址作為 HEAP 的結束地址,代碼實現如下所示:
七、其他說明
RT-Thread 的線程創建、信號量、互斥鎖的使用需要配置內存管理機制,RT-Thread Nano 允許配置使用小內存管理算法,如需在 Cubemx 中進行相關配置,請打開工程的 CubeMX 執行文件,使能如下選項:
> 注意:在使用RT-Thread Nano v4.1.1 CubeMX軟件包時請閱讀各個配置項的參數說明,部分配置項存在依賴關系,需根據說明進行配置。
-
STM32
+關注
關注
2266文章
10871瀏覽量
354786 -
開發板
+關注
關注
25文章
4943瀏覽量
97188 -
RT-Thread
+關注
關注
31文章
1272瀏覽量
39919 -
CubeMx
+關注
關注
0文章
30瀏覽量
1321
發布評論請先 登錄
相關推薦
評論