Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
RT-Thread Nano
RT-Thread Nano 上线ST CubeMX
发布于 2024-09-26 11:29:11 浏览:1316
订阅该版
[tocm] 感谢**ST法国CubeMX团队**的支持,RT-Thread Nano现已成功上线**ST CubeMX**。本文将详细介绍如何快速上手**RT-Thread Nano**,并指导大家在ST CubeMX上进行项目配置和开发。一起来看看吧! ### 一、准备工作 软件准备: - STM32 CubeMX_v6.11.0 以上版本 (https://www.st.com.cn/zh/development-tools/stm32cubemx.html) - Keil MDK (https://www.keil.com/download/product/) - 串口工具(推荐使用MobaXterm) (https://mobaxterm.mobatek.net/download.html) 硬件准备: - STM32 开发板(Cortex-M系列,这里我们以STM32F411RCT6 芯片作为演示) ### 二、安装 RT-Thread Nano v4.1.1 软件包 首先打开 STM32 CubeMX 软件,进入主页面后找到右侧的嵌入式软件包选项(Install or remove embedded software packages),点击 [ INSALL / REMOVE ] : ![1.png](https://oss-club.rt-thread.org/uploads/20240926/4e14519f2a8e02744a4d4b0ffa97c56d.png.webp) 在弹出的 Embedded Software Packages Manager 界面的上方导航栏中找到 RT-Thread 厂商 —> [ RealThread ] ,展开 X-CUBE-RT-Thread_Nano ,勾选中 RT-Thread Software Components (Size: 5.50 MB) ,并且点击 Install : ![2.png](https://oss-club.rt-thread.org/uploads/20240926/4daf4a114dad4aac5c80eb57068a0e7d.png.webp) 同意条款并点击 Finish : ![3.png](https://oss-club.rt-thread.org/uploads/20240926/aa8a3313cc6e64f3b9878321e0c28584.png) 注:此处如果没有找到 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 。 ![4.png](https://oss-club.rt-thread.org/uploads/20240926/6e763575e6f586047fd2fab5484bb822.png.webp) ### 四、芯片配置 首先勾选 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: ![5.png](https://oss-club.rt-thread.org/uploads/20240926/6e90e8164dee757cf427bbe2bfabe74d.png.webp) 在左侧导航栏中找到 RT-Thread Nano 软件包,同时在 Mode 一栏中使能 RTOS RT-Thread,接着我们在 Parameter Settings 中进行内核配置,这一步我们保持默认即可,同时往下翻找到 Finsh Configuration,使能 Finsh组件: ![6.png](https://oss-club.rt-thread.org/uploads/20240926/b6990c6f72474499fb3f7e8e4b812157.png.webp) 为了给 Finsh 组件提供串口设备,需要我们勾选一个串口,点击左侧功能栏 Connectivity —> USART1,设置串口模式为异步: ![7.png](https://oss-club.rt-thread.org/uploads/20240926/271034550817b786b15828ba25b316bb.png.webp) 选择 System Core —>SYS,将 Debug 选项配置为 Serial Wire: ![8.png](https://oss-club.rt-thread.org/uploads/20240926/d79d39b267dcfe22012552ca23ec7556.png) 在 RT-Thread 中重新定义了`HardFault_Handler`, `PendSV_Handler`, `SysTick_Handler`中断函数。为避免重复定义,在生成项目之前,请取消选择中断配置中的三个中断函数(对应注释了的选项`Hard fault interrupt`、`Pendable request`、`Time base: System tick timer`) ![9.png](https://oss-club.rt-thread.org/uploads/20240926/4cc8066e9568f921bac5dc7908fe9382.png.webp) 点击 Project Manager,填写项目名称,并修改 Toolchain / IDE 为 MDK-ARM,最后生成工程文件(在点击生成工程后会提示 RTOS 时基源的修改警告,点击 Yes 即可) ![10.png](https://oss-club.rt-thread.org/uploads/20240926/12c774d912b36f6cc075ab9485a74279.png.webp) ### 五、工程配置 **1.概述** 打开 MDK 工程后,工程目录下会生成几个 Middlewares Group,如下所示: ![11.png](https://oss-club.rt-thread.org/uploads/20240926/b2654809fbe103f19401889d89433f52.png.webp) **2.Finsh组件配置** 打开 Middlewares/RT-Thread/RTOS/kernel 目录下的 board.c 文件,修改 uart_init() 函数中串口号,该串口号默认为 USART1,需要根据实际在 CubeMX 中配置的串口进行修改 ![12.png](https://oss-club.rt-thread.org/uploads/20240926/7b74fa45102e168d030f94e6d30db8fc.png.webp) **3.主函数配置** 在 main.c 中包含头文件 `#include`,同时在 main 函数的 while(1) 中定义延时,以便 Finsh 和其他线程得到系统调度: ![13.png](https://oss-club.rt-thread.org/uploads/20240926/3d6ac2bdbb1ddd3d4c38e81defa0be10.png.webp) ![14.png](https://oss-club.rt-thread.org/uploads/20240926/d80a298caf949c43b5cd9eee478d5d49.png.webp) **4.观察现象** 在 MDK 中烧录程序后打开串口助手,复位开发板查看终端运行情况: ![15.png](https://oss-club.rt-thread.org/uploads/20240926/a2d9ac847d6e5e8c6618622902793e75.png) 到这里,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 的结束地址,代码实现如下所示: ![16.png](https://oss-club.rt-thread.org/uploads/20240926/9a371a979e445b8ac66e3390c6f76812.png.webp) ![17.png](https://oss-club.rt-thread.org/uploads/20240926/bb59e27730bb1303f7a4f0e9c58dc807.png) ### 七、其他说明 RT-Thread 的线程创建、信号量、互斥锁的使用需要配置内存管理机制,RT-Thread Nano 允许配置使用小内存管理算法,如需在 Cubemx 中进行相关配置,请打开工程的 CubeMX 执行文件,使能如下选项: ![18.png](https://oss-club.rt-thread.org/uploads/20240926/a8684564ae62ec8a12c58692ae1934b3.png.webp) > 注意:在使用RT-Thread Nano v4.1.1 CubeMX软件包时请阅读各个配置项的参数说明,部分配置项存在依赖关系,需根据说明进行配置。 具体的RT-Thread nano v4.1.1配置使用教程可参考该视频: ![15.jpg](https://oss-club.rt-thread.org/uploads/20240926/375dc0a7e75a34f8b38322708949c100.jpg) (视频可以在公众号文章查看或者登录bilibili查看) bilibili链接:https://www.bilibili.com/video/BV1AUtWeiEDC/?spm_id_from=333.999.0.0 ——————End——————
10
条评论
默认排序
按发布时间排序
登录
注册新账号
关于作者
RT-Thread小师弟
微信:rtthread2020
文章
289
回答
171
被采纳
33
关注TA
发私信
相关文章
1
求高手指点,RTThread下nanosleep()函数功能如何实现?在线等啊
2
RTT1.2.2在新塘Nano130KE3BN的移植中始终出现栈溢出的问题
3
官方能否出一个nano在mdk下移植finsh到stm32的教程
4
从裸机开始,创建一个RT-Thread Nano系统工程
5
Nano版如何启用shell
6
项目从RTT 2.x NANO移植到 RTT 3.x ENV 环境
7
nano 版本有没有集成到 IAR 中啊?
8
关于MDK5的RT-THREAD NANO中添加MSH组件的例程
9
rtt_nano版本,源代码在哪里下载啊?
10
RTT Nano 在keil 使用C++11 的问题
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
USB
DMA
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
FAL
rt-smart
ESP8266
I2C_IIC
WIZnet_W5500
ota在线升级
UART
PWM
cubemx
freemodbus
flash
packages_软件包
BSP
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
socket
中断
Debug
编译报错
msh
SFUD
keil_MDK
rt_mq_消息队列_msg_queue
at_device
ulog
C++_cpp
本月问答贡献
踩姑娘的小蘑菇
7
个答案
3
次被采纳
张世争
8
个答案
2
次被采纳
rv666
5
个答案
2
次被采纳
用户名由3_15位
11
个答案
1
次被采纳
KunYi
6
个答案
1
次被采纳
本月文章贡献
程序员阿伟
5
篇文章
2
次点赞
hhart
3
篇文章
4
次点赞
大龄码农
1
篇文章
2
次点赞
ThinkCode
1
篇文章
1
次点赞
Betrayer
1
篇文章
1
次点赞
回到
顶部
发布
问题
投诉
建议
回到
底部