感謝ST法國CubeMX團(tuán)隊(duì)的支持,RT-Thread Nano已成功上線ST CubeMX。本文將詳細(xì)介紹如何快速上手RT-Thread Nano,并指導(dǎo)大家在ST CubeMX上進(jìn)行項(xiàng)目配置和開發(fā)。一起來看看吧!
一、準(zhǔn)備工作
軟件準(zhǔn)備:
STM32 CubeMX_v6.11.0 以上版本
Keil MDK
串口工具(推薦使用MobaXterm)
硬件準(zhǔn)備:
STM32 開發(fā)板(Cortex-M系列,這里我們以STM32F411RCT6 芯片作為演示)
二、安裝 RT-Thread Nano v4.1.1 軟件包
首先打開 STM32 CubeMX 軟件,進(jìn)入主頁面后找到右側(cè)的嵌入式軟件包選項(xiàng)(Install or remove embedded software packages),點(diǎn)擊 [ INSALL / REMOVE ] :

在彈出的 Embedded Software Packages Manager 界面的上方導(dǎo)航欄中找到 RT-Thread 廠商 —> [ RealThread ] ,展開 X-CUBE-RT-Thread_Nano ,勾選中 RT-Thread Software Components (Size: 5.50 MB) ,并且點(diǎn)擊 Install :

同意條款并點(diǎn)擊 Finish :

注:此處如果沒有找到 RealThread 廠商選項(xiàng),可點(diǎn)擊下方 Refresh 按鈕更新資源包索引后開始下載,下載成功后 RT-Thread Software Components 4.1.1 呈深綠色方形顯示,關(guān)閉窗口后開始工程創(chuàng)建。
三、創(chuàng)建 STM32 CubeMX 項(xiàng)目工程
創(chuàng)建工程可以選擇基于 MCU 或 Board,這里我們以創(chuàng)建 MCU 作為教學(xué)演示,點(diǎn)擊 ACCESS TO MCU SELECTOR ,在左上角的 Commercial Part Number 中輸入芯片型號(hào),這里我的芯片型號(hào)為 STM32F411RCT6 ,選中對應(yīng)MCU后點(diǎn)擊右上角 Start Project 。

四、芯片配置
首先勾選 RT-Thread Nano v4.1.1 軟件包,依次點(diǎn)擊 Software Packs-> Select Components,并找到 RealThread.X-CUBE-RT-Thread_Nano 4.1.1 一欄,根據(jù)開發(fā)需求勾選配置項(xiàng),其中 kernel 和 libcpu 為必選項(xiàng),這里我們選擇 kernel、shell 和 ibcpu 三個(gè)配置項(xiàng)后點(diǎn)擊 OK:

在左側(cè)導(dǎo)航欄中找到 RT-Thread Nano 軟件包,同時(shí)在 Mode 一欄中使能 RTOS RT-Thread,接著我們在 Parameter Settings 中進(jìn)行內(nèi)核配置,這一步我們保持默認(rèn)即可,同時(shí)往下翻找到 Finsh Configuration,使能 Finsh組件:

為了給 Finsh 組件提供串口設(shè)備,需要我們勾選一個(gè)串口,點(diǎn)擊左側(cè)功能欄 Connectivity —> USART1,設(shè)置串口模式為異步:

選擇 System Core —>SYS,將 Debug 選項(xiàng)配置為 Serial Wire:

在 RT-Thread 中重新定義了`HardFault_Handler`, `PendSV_Handler`, `SysTick_Handler`中斷函數(shù)。為避免重復(fù)定義,在生成項(xiàng)目之前,請取消選擇中斷配置中的三個(gè)中斷函數(shù)(對應(yīng)注釋了的選項(xiàng)`Hard fault interrupt`、`Pendable request`、`Time base: System tick timer`)

點(diǎn)擊 Project Manager,填寫項(xiàng)目名稱,并修改 Toolchain / IDE 為 MDK-ARM,最后生成工程文件(在點(diǎn)擊生成工程后會(huì)提示 RTOS 時(shí)基源的修改警告,點(diǎn)擊 Yes 即可)

五、工程配置
1.概述
打開 MDK 工程后,工程目錄下會(huì)生成幾個(gè) Middlewares Group,如下所示:

2.Finsh組件配置
打開 Middlewares/RT-Thread/RTOS/kernel 目錄下的 board.c 文件,修改 uart_init() 函數(shù)中串口號(hào),該串口號(hào)默認(rèn)為 USART1,需要根據(jù)實(shí)際在 CubeMX 中配置的串口進(jìn)行修改

3.主函數(shù)配置
在 main.c 中包含頭文件 `#include`,同時(shí)在 main 函數(shù)的 while(1) 中定義延時(shí),以便 Finsh 和其他線程得到系統(tǒng)調(diào)度:


4.觀察現(xiàn)象
在 MDK 中燒錄程序后打開串口助手,復(fù)位開發(fā)板查看終端運(yùn)行情況:

到這里,RT-Thread Nano v4.1.1 就成功運(yùn)行起來了。
六、內(nèi)存堆初始化
系統(tǒng)內(nèi)存堆的初始化是通過 board.c 中的 rt_hw_board_init() 函數(shù)實(shí)現(xiàn)的,如果需要啟用內(nèi)存堆可通過宏定義 RT_USING_HEAP 實(shí)現(xiàn),RT-Thread Nano 默認(rèn)不開啟內(nèi)存堆功能。一旦 RT_USING_HEAP 被啟用,系統(tǒng)會(huì)默認(rèn)使用一個(gè)數(shù)組作為堆,堆的其實(shí)地址和結(jié)束地址作為參數(shù)傳遞給堆初始化函數(shù) rt_system_heap_init(),該函數(shù)在 rt_hw_board_init() 中調(diào)用。
如果不希望使用數(shù)組作為動(dòng)態(tài)內(nèi)存堆,可以使用 RAM 的 ZI 段的末尾作為 HEAP 的起始地址(需要確保它與鏈接腳本對應(yīng)上),并使用RAM的結(jié)束地址作為 HEAP 的結(jié)束地址,代碼實(shí)現(xiàn)如下所示:


七、其他說明
RT-Thread 的線程創(chuàng)建、信號(hào)量、互斥鎖的使用需要配置內(nèi)存管理機(jī)制,RT-Thread Nano 允許配置使用小內(nèi)存管理算法,如需在 Cubemx 中進(jìn)行相關(guān)配置,請打開工程的 CubeMX 執(zhí)行文件,使能如下選項(xiàng):

> 注意:在使用RT-Thread Nano v4.1.1 CubeMX軟件包時(shí)請閱讀各個(gè)配置項(xiàng)的參數(shù)說明,部分配置項(xiàng)存在依賴關(guān)系,需根據(jù)說明進(jìn)行配置。
-
STM32
+關(guān)注
關(guān)注
2309文章
11162瀏覽量
373448 -
開發(fā)板
+關(guān)注
關(guān)注
26文章
6291瀏覽量
118108 -
RT-Thread
+關(guān)注
關(guān)注
32文章
1614瀏覽量
44877 -
CubeMx
+關(guān)注
關(guān)注
0文章
32瀏覽量
2022
發(fā)布評(píng)論請先 登錄
RISC-V單片機(jī)快速入門02,移植RT_Thread Nano系統(tǒng)
請問RT-Thread與stm32cubemx聯(lián)合開發(fā)的原理是什么?
FlashDB移植到rt-thread nano,運(yùn)行時(shí)控制臺(tái)無輸出怎么解決?
移植最新版的rt-thread nano時(shí)程序進(jìn)入到entry就報(bào)錯(cuò),為什么?
使用RT-Thread studio 開發(fā)RT-Thread Nano項(xiàng)目的時(shí)候 串口的驅(qū)動(dòng)是要自己寫嗎?
RT-Thread Studio無法調(diào)用CubeMX的GPIO接口怎么解決?
RT-Thread Nano源碼bsp工程無法正常使用msh,輸入msh命令無響應(yīng)是什么原因?
CubeMX移植RT-Thread 3.1.5文件重復(fù)怎么解決?
RT-Thread Nano移植后動(dòng)態(tài)創(chuàng)建線程創(chuàng)建不了怎么解決?
STM32cubeMX生成配置rt-thread引用問題求解
恩智浦MCU教程 基于MCUXpresso和FRDM-MCXA346的RT-Thread Nano移植
RT-Thread Nano 上線ST CubeMX
評(píng)論