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
    +关注

    关注

    2313

    文章

    11195

    浏览量

    374676
  • 开发板
    +关注

    关注

    26

    文章

    6428

    浏览量

    120965
  • RT-Thread
    +关注

    关注

    32

    文章

    1641

    浏览量

    45216
  • CubeMx
    +关注

    关注

    0

    文章

    33

    浏览量

    2060
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    RISC-V单片机快速入门02,移植RT_Thread Nano系统

    -port-gcc-riscv/an0042-nano-port-gcc-riscv/#nano 二、移植步骤 1.移植步骤概述 (1)准备一个基础的 NucleiStudio 工程,并获取 RT-Thread
    发表于 11-10 07:23

    请问RT-Thread与stm32cubemx联合开发的原理是什么?

    在使用RT-Thread与stm32cubemx联合开发的原理是什么,cubemx在其中主要起到了哪些功能呢?
    发表于 10-11 15:49

    FlashDB移植到rt-thread nano,运行时控制台无输出怎么解决?

    rt-thread标准版和HAL裸机版,移植非常成功,换成nano 3.15版,就出现控制台无输出,也无法输入,调试时进入死循环,如图所示 ,关闭hook也不行,请求指点。谢谢! 上传测试代码,用的是nano4.1.1 4.1
    发表于 10-11 09:34

    移植最新版的rt-thread nano时程序进入到entry就报错,为什么?

    我在移植最新版的rt-thread nano时发现程序只要一进去entry函数就直接跳到一个死循环里,我使用的编译器是armgcc10.2版本。然而我移植旧版的rt-thread nano
    发表于 10-09 07:17

    使用RT-Thread studio 开发RT-Thread Nano项目的时候 串口的驱动是要自己写吗?

    刚入坑。使用RT-Thread studio 开发RT-Thread 标准板项目的时候直接使用里边的串口uart_dev=rt_device_find(“uart5”);然后操作设备,在开发R
    发表于 09-26 08:14

    RT-Thread Studio无法调用CubeMX的GPIO接口怎么解决?

    创建简单的LED闪烁程序 RT-Thread Studio 版本: 2.2.7 创建新的RT-thread系统,系统版本4.1.1用CubeMX定义的GPIO,在文件夹applications中
    发表于 09-26 06:49

    RT-Thread Nano源码bsp工程无法正常使用msh,输入msh命令无响应是什么原因?

    最近想使用RT-Thread-Nano进行开发,在官网下载了RT-Thread Nano的源码,发现源码内有一些提供好的工程,便找了一个支持msh的工程进行调试,但是发现工程基础配置存在问题。 在./bsp/stm32f103-
    发表于 09-25 07:41

    CubeMX移植RT-Thread 3.1.5文件重复怎么解决?

    CubeMX6.7.0内移植RT-Thread Nano3.1.5文件重复,主要是两个部分 1、 和 两个地方重复rtconfig.h 2、shell相关的文件也会重复 和 请问下各位有没有办法可以解决这个问题的?
    发表于 09-24 07:11

    RT-Thread Nano移植后动态创建线程创建不了怎么解决?

    RT-Thread Nano 移植后动态创建线程创建不了,静态可以.直接烧录DEMO也一样,将RT_USING_HEAP开起来,使用动态创建就创建不起来,RT_USING_HEAP关掉
    发表于 09-19 06:28

    STM32cubeMX生成配置rt-thread引用问题求解

    如题,本人小白,刚接触rt-thread,STM32F1/4简便配置起见利用cubeMX自动生成,测试几次后直接蒙了,不知道哪些文件是rt-thread项目必须的,网上说法也五花八门,说代码屏蔽某些
    发表于 09-12 07:21

    恩智浦MCU教程 基于MCUXpresso和FRDM-MCXA346的RT-Thread Nano移植

    本篇还是以移植RT-Thread Nano到MCUXpresso IDE为主,移植的代码可以在nxpic.org.cn论坛搜索到。
    的头像 发表于 08-21 09:49 6957次阅读
    恩智浦MCU教程 基于MCUXpresso和FRDM-MCXA346的<b class='flag-5'>RT-Thread</b> <b class='flag-5'>Nano</b>移植

    如何移植 RT-Thread Nano 并创建 2 个线程?

    基于 BSP 中的 GPIO_OutputInput 演示,展示了如何移植 RT-Thread Nano 并创建 2 个线程。
    发表于 08-19 07:45

    RT-Thread荣获2025优秀开源项目 | 新闻速递

    6月底,RT-Thread睿赛德受邀参与由上海开源信息技术协会主办的2025上海开源创新精英荟。上海市商委副主任张杰出席会议并致辞。RT-Thread嵌入式操作系统项目凭借其卓越的技术创新与开源生态
    的头像 发表于 07-04 09:04 2827次阅读
    <b class='flag-5'>RT-Thread</b>荣获2025优秀开源项目 | 新闻速递

    RT-Thread Nano源码bsp工程无法正常使用msh,输入msh命令无响应怎么解决?

    最近想使用RT-Thread-Nano进行开发,在官网下载了RT-Thread Nano的源码,发现源码内有一些提供好的工程,便找了一个支持msh的工程进行调试,但是发现工程基础配置存在问题。 在./bsp/stm32f103-
    发表于 06-12 06:50

    RT-Thread Nano移植后动态创建线程创建不了怎么处理?

    RT-Thread Nano移植后动态创建线程创建不了,静态可以.直接烧录DEMO也一样,将RT_USING_HEAP开起来,使用动态创建就创建不起来,RT_USING_HEAP关掉后
    发表于 06-11 06:36