0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

RT-Thread Nano 上线ST CubeMX

RT-Thread官方账号 2024-09-20 08:10 次阅读

感谢ST法国CubeMX团队的支持,RT-Thread Nano已成功上线ST CubeMX。本文将详细介绍如何快速上手RT-Thread Nano,并指导大家在ST CubeMX上进行项目配置和开发。一起来看看吧!

一、准备工作

软件准备:

STM32 CubeMX_v6.11.0 以上版本

Keil MDK

串口工具(推荐使用MobaXterm)

硬件准备:

STM32 开发板(Cortex-M系列,这里我们以STM32F411RCT6 芯片作为演示)

二、安装 RT-Thread Nano v4.1.1 软件包

首先打开 STM32 CubeMX 软件,进入主页面后找到右侧的嵌入式软件包选项(Install or remove embedded software packages),点击 [ INSALL / REMOVE ] :

b7740816-76e4-11ef-bb4b-92fbcf53809c.png

在弹出的 Embedded Software Packages Manager 界面的上方导航栏中找到 RT-Thread 厂商 —> [ RealThread ] ,展开 X-CUBE-RT-Thread_Nano ,勾选中 RT-Thread Software Components (Size: 5.50 MB) ,并且点击 Install :

b784748a-76e4-11ef-bb4b-92fbcf53809c.png

同意条款并点击 Finish :

b7920c9e-76e4-11ef-bb4b-92fbcf53809c.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 。

b7bfe54c-76e4-11ef-bb4b-92fbcf53809c.png

四、芯片配置

首先勾选 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:

b80e8de6-76e4-11ef-bb4b-92fbcf53809c.png

在左侧导航栏中找到 RT-Thread Nano 软件包,同时在 Mode 一栏中使能 RTOS RT-Thread,接着我们在 Parameter Settings 中进行内核配置,这一步我们保持默认即可,同时往下翻找到 Finsh Configuration,使能 Finsh组件:

b822faa6-76e4-11ef-bb4b-92fbcf53809c.png

为了给 Finsh 组件提供串口设备,需要我们勾选一个串口,点击左侧功能栏 Connectivity —> USART1,设置串口模式为异步:

b82f6ad4-76e4-11ef-bb4b-92fbcf53809c.png

选择 System Core —>SYS,将 Debug 选项配置为 Serial Wire:

b83b0358-76e4-11ef-bb4b-92fbcf53809c.png

在 RT-Thread 中重新定义了`HardFault_Handler`, `PendSV_Handler`, `SysTick_Handler`中断函数。为避免重复定义,在生成项目之前,请取消选择中断配置中的三个中断函数(对应注释了的选项`Hard fault interrupt`、`Pendable request`、`Time base: System tick timer`)

b8514640-76e4-11ef-bb4b-92fbcf53809c.png

点击 Project Manager,填写项目名称,并修改 Toolchain / IDE 为 MDK-ARM,最后生成工程文件(在点击生成工程后会提示 RTOS 时基源的修改警告,点击 Yes 即可)

b868e534-76e4-11ef-bb4b-92fbcf53809c.png

五、工程配置

1.概述

打开 MDK 工程后,工程目录下会生成几个 Middlewares Group,如下所示:

b88ca7a8-76e4-11ef-bb4b-92fbcf53809c.png

2.Finsh组件配置

打开 Middlewares/RT-Thread/RTOS/kernel 目录下的 board.c 文件,修改 uart_init() 函数中串口号,该串口号默认为 USART1,需要根据实际在 CubeMX 中配置的串口进行修改

b8a01bee-76e4-11ef-bb4b-92fbcf53809c.png

3.主函数配置

在 main.c 中包含头文件 `#include`,同时在 main 函数的 while(1) 中定义延时,以便 Finsh 和其他线程得到系统调度:

b9455dac-76e4-11ef-bb4b-92fbcf53809c.pngb955d024-76e4-11ef-bb4b-92fbcf53809c.png

4.观察现象

在 MDK 中烧录程序后打开串口助手,复位开发板查看终端运行情况:

b9669b66-76e4-11ef-bb4b-92fbcf53809c.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 的结束地址,代码实现如下所示:

b98f3b66-76e4-11ef-bb4b-92fbcf53809c.pngb99cf670-76e4-11ef-bb4b-92fbcf53809c.png

七、其他说明

RT-Thread 的线程创建、信号量、互斥锁的使用需要配置内存管理机制,RT-Thread Nano 允许配置使用小内存管理算法,如需在 Cubemx 中进行相关配置,请打开工程的 CubeMX 执行文件,使能如下选项:

b9be0acc-76e4-11ef-bb4b-92fbcf53809c.png

> 注意:在使用RT-Thread Nano v4.1.1 CubeMX软件包时请阅读各个配置项的参数说明,部分配置项存在依赖关系,需根据说明进行配置。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • STM32
    +关注

    关注

    2264

    文章

    10854

    浏览量

    354298
  • 开发板
    +关注

    关注

    25

    文章

    4896

    浏览量

    97059
  • RT-Thread
    +关注

    关注

    31

    文章

    1261

    浏览量

    39839
  • CubeMx
    +关注

    关注

    0

    文章

    30

    浏览量

    1306
收藏 人收藏

    评论

    相关推荐

    开源共生 商业共赢 | RT-Thread 2024开发者大会报名启动!

    亲爱的RT-Thread开发者我们很高兴地宣布,一年一度的RDC(RT-ThreadDeveloperConference,RT-Thread开发者大会)正式启动报名!2024RT-Threa
    的头像 发表于 10-29 08:06 156次阅读
    开源共生 商业共赢 | <b class='flag-5'>RT-Thread</b> 2024开发者大会报名启动!

    STM32CubeMX为什么无法添加rt-thread-nano

    STM32CubeMX 无法添加 rt-thread-nano
    发表于 09-27 06:17

    课程上线 - RT-Thread应用开发实践课程上线慕课平台啦!

    我们非常高兴地告诉大家,由广东机电职业技术学院的老师们制作的,使用《RT-Thread应用开发实践》作为教材的课程——嵌入式操作系统应用,正式上线慕课平台啦!欢迎各位想要系统学习RT-Thread
    的头像 发表于 09-14 08:07 282次阅读
    课程<b class='flag-5'>上线</b> - <b class='flag-5'>RT-Thread</b>应用开发实践课程<b class='flag-5'>上线</b>慕课平台啦!

    2024 RT-Thread全球巡回 线下培训火热来袭!

    亲爱的RT-Thread社区成员们:我们非常高兴地宣布,2024年RT-Thread全球开发者线下培训即将拉开帷幕!24年全球巡回培训将覆盖超10座城市及国家,为开发者提供一个深入学习RT-Thread嵌入式开发的绝佳机会。
    的头像 发表于 08-07 08:35 825次阅读
    2024 <b class='flag-5'>RT-Thread</b>全球巡回 线下培训火热来袭!

    RT-Thread 新里程碑达成——GitHub Star 破万!

    RT-Thread实时操作系统开源项目在GitHub上的star数量突破一万!截止发文,RT-Thread作为实时操作系统在业界Star数量排名第一!仓库地址:https://github.com
    的头像 发表于 07-04 08:35 378次阅读
    <b class='flag-5'>RT-Thread</b> 新里程碑达成——GitHub Star 破万!

    6月6日杭州站RT-Thread线下workshop,探索RT-Thread混合部署新模式!

    6月6日下午我们将在杭州举办RT-Thread混合部署线下workshop,在瑞芯微RK3568平台上实现同时运行RT-Thread和linux,本次workshop邀请到RT-Thread资深
    的头像 发表于 05-28 08:35 386次阅读
    6月6日杭州站<b class='flag-5'>RT-Thread</b>线下workshop,探索<b class='flag-5'>RT-Thread</b>混合部署新模式!

    RT-Thread混合部署Workshop北京站来啦!

    4月25日,下午我们将在北京举办RT-Thread混合部署线下workshop,在瑞芯微RK3568平台上实现同时运行RT-Thread和linux,本次workshop邀请到RT-Thread资深
    的头像 发表于 04-19 08:34 384次阅读
    <b class='flag-5'>RT-Thread</b>混合部署Workshop北京站来啦!

    4月25日北京站RT-Thread线下workshop,探索RT-Thread混合部署新模式

    4月25日,下午我们将在北京举办RT-Thread混合部署线下workshop,在瑞芯微RK3568平台上实现同时运行RT-Thread和linux,本次workshop邀请到RT-Thread资深
    的头像 发表于 04-16 08:35 382次阅读
    4月25日北京站<b class='flag-5'>RT-Thread</b>线下workshop,探索<b class='flag-5'>RT-Thread</b>混合部署新模式

    4月10日深圳场RT-Thread线下workshop,探索RT-Thread混合部署新模式!

    4月10日我们将在深圳福田举办RT-Thread混合部署线下workshop,在瑞芯微RK3568平台上实现同时运行RT-Thread和linux,本次workshop邀请到RT-Thread资深嵌入式软件工程师农晓明老师为您讲
    的头像 发表于 03-27 11:36 743次阅读
    4月10日深圳场<b class='flag-5'>RT-Thread</b>线下workshop,探索<b class='flag-5'>RT-Thread</b>混合部署新模式!

    4月10日深圳场RT-Thread线下workshop,探索RT-Thread混合部署新模式!

    4月10日我们将在深圳福田举办RT-Thread混合部署线下workshop,在瑞芯微RK3568平台上实现同时运行RT-Thread和linux,本次workshop邀请到RT-Thread资深
    的头像 发表于 03-27 08:34 464次阅读
    4月10日深圳场<b class='flag-5'>RT-Thread</b>线下workshop,探索<b class='flag-5'>RT-Thread</b>混合部署新模式!

    恩智浦半导体正式加入RT-Thread全球合作伙伴计划!

    前不久,恩智浦半导体正式加入RT-Thread全球合作伙伴计划,成为RT-Thread高级会员合作伙伴。同时,RT-Thread现已成为恩智浦注册合作伙伴(RT-Thread| 简介合
    的头像 发表于 03-14 10:40 553次阅读
    恩智浦半导体正式加入<b class='flag-5'>RT-Thread</b>全球合作伙伴计划!

    基于CubeMXRT-thread Nano可以添加microros这样的软件包吗?

    最近使用rt-thread配置一个ROS2,但是是用CubeMX联合Clion做的,CubeMX使用的是RT-thread nano包, 请
    发表于 03-01 06:00

    RT-Thread Nano在调用rt_thread_control时,修改线程优先级一直不执行的原因?如何解决?

    RT-Thread Nano在调用rt_thread_control时,修改线程优先级一直不执行
    发表于 02-23 07:32

    RT-Thread Nano入门:串口接收与消息队列

    本文主要介绍怎么用RT-Thread Nano的消息队列方式实现串口数据接收,结合串口接收中断和空闲中断,接收上位机发来的一帧数据。
    的头像 发表于 11-22 11:07 3703次阅读
    <b class='flag-5'>RT-Thread</b> <b class='flag-5'>Nano</b>入门:串口接收与消息队列

    RT-Thread Nano入门:独立看门狗(IWDT)

    本文主要介绍怎么用RT-Thread Nano实现独立看门狗IWDT驱动,创建一个喂狗线程,实现定时喂狗功能。
    的头像 发表于 11-22 11:04 2093次阅读
    <b class='flag-5'>RT-Thread</b> <b class='flag-5'>Nano</b>入门:独立看门狗(IWDT)