本篇博客描述的是 RT-Thread + STM32 + CubeMX 的使用方法。本文也为大家提供了基于 STM32 使用 CubeMX 添加 RT-Thread 并创建闪烁 LED 任务 的操作流程。 便于您更好的理解。

一、RT-Thread 是什么?

RT-Thread 是一个开源、轻量级的实时操作系统,适用于嵌入式设备(简单点可以理解它是一个国产版本的 FreeRTO,专为单片机设计的轻量级实时操作系统),具有以下特点:

特性说明
多任务调度支持抢占式调度、优先级管理
组件丰富包含 shell、消息队列、定时器、内存管理等
可视化配置支持 CubeMX 快速集成使用
支持 CMSIS与 STM32 HAL/CubeMX 无缝结合

🛠️ 二、CubeMX 添加 RT-Thread 的完整步骤

这里是 RT-Thread 安装包的链接 和 在CubeMX中安装RT-THREAD的操作步骤:
包的链接:
https://www.rt-thread.org/download/cube/RealThread.RT-Thread.pdsc
操作步骤:
https://blog.csdn.net/qq_36075612/article/details/107309750

✅ 步骤 1:创建空白工程

选择芯片型号(如 STM32F103RCTx),创建空白工程。
请添加图片描述

✅ 步骤 2:安装 RT-Thread 软件包

📌 在 CubeMX 中依次点击:

Clock Configuration > Software Packs > Manage Software Packs

请添加图片描述
在这里插入图片描述

✅ 步骤 3:添加 RT-Thread 的 PDSC 链接

输入链接地址:

https://www.rt-thread.org/download/cube/RealThread.RT-Thread.pdsc

点击 Check → OK → 等待安装完成。
在这里插入图片描述

✅ 步骤 4:启用 RT-Thread 组件

点击:

Software Packs > Select Components

✔ 勾选:

  • RTOS RT-Thread > kernel
  • (可选)device drivers、shell 等组件

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

然后我们配置一个点灯功能,点击进入 Select Components
在这里插入图片描述

这里我选择的 3.1.1 的版本(你也可以使用其他版本)
在这里插入图片描述

✅ 步骤 5:配置 RT-Thread 参数

在左侧导航栏中,点击 RealThread.RT-Thread.x.x.x
可修改参数(如主线程栈大小、最大优先级数、启用主线程等)

在这里插入图片描述

✅ 步骤 6:配置 GPIO(LED)

例如:配置 PC7 为输出模式,控制 LED。
此处要注意配置的时钟 和 SysTick 可能会出现冲突。如果出现这种情况,你可以把时钟源改一下即可。
在这里插入图片描述

✅ 步骤 7:生成代码

设置 Timebase 为 TIM6(推荐)
点击右上角 GENERATE CODE 生成工程。
在这里插入图片描述


三、添加 RT-Thread 线程控制 LED(代码部分)

生成工程后,在 applications/main.c 中添加你的线程任务:

LED 闪烁线程

📄 main.c

#include <rtthread.h>
#include "main.h"  // 包含 HAL 库函数#define LED_PIN    GPIO_PIN_7
#define LED_PORT   GPIOC/* 线程控制块和栈 */
static rt_thread_t led_thread = RT_NULL;/* 线程入口函数 */
void led_blink_thread_entry(void *parameter)
{while (1){HAL_GPIO_TogglePin(LED_PORT, LED_PIN);rt_thread_mdelay(500); // 延时500ms}
}/* main 函数 */
int main(void)
{/* 初始化 HAL 库 */HAL_Init();SystemClock_Config();/* 初始化 GPIO */MX_GPIO_Init();/* 创建线程 */led_thread = rt_thread_create("led",led_blink_thread_entry,RT_NULL,512,      // 栈大小10,       // 优先级10);      // 时间片if (led_thread != RT_NULL)rt_thread_startup(led_thread);/* 启动 RT-Thread 内核 */rtthread_startup();return 0;
}
运行效果
  • 编译后烧录程序
  • LED(PC7)每 500ms 亮灭一次
  • 如果使用串口 + FinSH,可扩展 shell 控制
一些问题排查
编译找不到 rtthread.h				检查是否启用了 RT-Thread kernel
LED 不亮							检查 GPIO 是否配置为输出,是否接 LED
main.c 没有执行					需启用 use user main 选项
多线程冲突						调整线程优先级 & 栈大小,防止溢出

相比于 freeRTOS,CubeMX 配合 RT-Thread 软件包可以快速构建基于 STM32 的实时多任务系统,适用于 LED 控制、传感器采集、串口通信等等多种的应用场景。

当然,你也可以直接使用 RT-Thread 的官网版本

RT-Thread 的官网版本:https://github.com/RT-Thread/rt-thread

RT-Thread env工具:https://www.rt-thread.org/download.html#download-rt-thread-env-tool

RT-Thread Studio IDE(图形开发):https://www.rt-thread.org

RT-Thread文档中心:https://www.rt-thread.org/document/site/#/development-tools/env/env

如果不想麻烦去找,也可以在我的资源中直接下载即可,我为大家准备了:嵌入式系统开发】RT-Thread env工具用户手册

这是使用 RT-Thread 官方版本 + Env 工具在 STM32 上创建一个最小工程,实现 LED 闪烁任务(不依赖 CubeMX),主要介绍了从下载、配置、工程生成到编写任务代码,全流程操作

准备工作

✅ 1. 下载 RT-Thread 官方源码

GitHub 地址:https://github.com/RT-Thread/rt-thread
你可以用 Git 克隆 或 直接在官网下载 ZIP 解压。:

git clone https://github.com/RT-Thread/rt-thread.git
✅ 2. 安装 RT-Thread Env 工具

官网下载:https://www.rt-thread.org/download.html#download-rt-thread-env-tool

文档教程:RT-Thread Env 文档

Env 是 RT-Thread 官方的命令行配置工具,主要功能包括:

  • 创建 BSP 工程
  • 配置 .config
  • 编译、烧录、清理工程
✅ 3. 安装编译工具链

Windows 推荐安装:Keil MDK 或 GCC ARM
推荐使用 RT-Thread Studio 图形开发环境(可选)


创建 LED 闪烁工程(基于 STM32F103)

✅ 1. 打开 env.exe(CMD 窗口)

进入 RT-Thread 根目录,运行:

cd rt-thread\bsp\stm32

创建一个基于 STM32F103 的模板工程(如使用 stm32f103-nucleostm32f103-atk-nano):

cd stm32f103-atk-nano
menuconfig

🚨 若无 menuconfig 命令提示,需执行一次 scons --menuconfig 或配置 python 环境变量。

✅ 2. 使能 LED 引脚和线程调度

menuconfig 中打开以下选项:

  • RT-Thread KernelUsing main thread
  • Hardware Drivers ConfigEnable GPIO

保存并退出(保存为 .config 文件)

✅ 3. 编译工程
scons

成功后会生成 .elf, .bin, .hex 等文件,准备烧录。


添加 LED 闪烁线程代码

修改路径至:applications/main.c

✅ 根据点灯的业务逻辑编写代码如下:

#include <rtthread.h>
#include <board.h>     // 包含 LED 引脚宏定义#define LED_PIN GET_PIN(C, 13) // 以 PC13 为例(蓝色小板)static void led_blink(void *parameter)
{rt_pin_mode(LED_PIN, PIN_MODE_OUTPUT);while (1){rt_pin_write(LED_PIN, PIN_LOW);rt_thread_mdelay(500);  // 延时500msrt_pin_write(LED_PIN, PIN_HIGH);rt_thread_mdelay(500);}
}int main(void)
{// 创建线程rt_thread_t tid = rt_thread_create("led",led_blink,RT_NULL,512,10,10);if (tid != RT_NULL)rt_thread_startup(tid);return 0;
}
最后,编译和烧录验证

使用 ST-Link + STM32CubeProgrammerKeil 烧录 .hex 文件,运行后:

  • PC13 引脚连接的 LED 会以 500ms 闪烁周期亮灭
  • 若使用 ATK 板或其他外设板,请根据实际修改引脚

在这里插入图片描述

扩展功能:

FinSH Shell: 打开 menuconfig 启用 shell(命令行)
UART 输出日志: 打开 RT_USING_CONSOLE 并配置串口
软件定时器: 使用 rt_timer 实现定时任务
消息队列: 使用 rt_mq 实现任务通信

综上所述,使用 RT-Thread 官网版本 + Env 工具,可快速构建跨平台、轻量级的嵌入式 RTOS 工程,在 STM32 上实现 LED 控制、串口通信、任务调度等功能,这种方式可以完全脱离 CubeMX 来实现。

以上,欢迎有从事同行业的电子信息工程、互联网通信、嵌入式开发的朋友共同探讨与提问,我可以提供实战演示或模板库。希望内容能够对你产生帮助!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/920221.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/920221.shtml
英文地址,请注明出处:http://en.pswp.cn/news/920221.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于Ubuntu22.04系统PaddleX和PaddleClas训练推理MMAFEDB人脸表情识别数据集(详细教程)

目录 基于Ubuntu22.04系统PaddleX和PaddleClas训练推理MMAFEDB人脸表情识别数据集(详细教程) 超实用的Paddle图像分类训练推理教程&#xff0c;助力深度学习研究&#xff01; 1、环境准备(重要⭐⭐⭐) 构建虚拟环境 安装PaddlePaddle 安装PaddleX 安装PaddleClas插件 2…

Mistral AI音频大模型Voxtral解读

1. 引言 传统的语音处理系统(如OpenAI的Whisper)在ASR任务上取得了巨大成功,能将语音高精度地转换为文本。但这只是第一步。真正的“语音理解”意味着: 内容推理:不仅知道说了什么,还能理解话语背后的含义、情感和意图。 长篇摘要:能够听完一段长达数十分钟的播客或会议…

使用Docker+WordPress部署个人博客

一、通过docker compose 自动一键部署WordPress 1. 准备工作 安装 Docker 和 Docker Compose确保服务器有公网 IP&#xff08;如果需要外部访问&#xff09;域名&#xff08;可选&#xff0c;用于绑定网站&#xff09; 2. 创建 Docker Compose 配置文件 创建一个docker-compose…

http与https配置

Web 服务详解&#xff1a;HTTP 与 HTTPS 配置 一、HTTP 服务概述 HTTP&#xff08;Hypertext Transfer Protocol&#xff0c;超文本传输协议&#xff09;是用于在网络上传输网页数据的基础协议&#xff0c;默认使用80 端口&#xff0c;以明文形式传输数据。常见的 HTTP 服务软件…

Python爬虫实战:研究amazon-scrapy,构建亚马逊电商数据采集和分析系统

1 引言 1.1 研究背景 电子商务的高速发展使电商平台成为数据价值的核心载体。亚马逊作为全球领先的电商生态,截至 2024 年第二季度,其平台商品总量突破 1.5 亿,日均活跃用户超 3 亿,每日产生 PB 级的交易数据与用户行为记录。这些数据包含商品特征(价格、规格、品牌)、…

基于ERNIE 4.5的多智能体协作的自动化视频舆情分析报告生成器

多智能体协作的自动化视频舆情分析报告生成器 1. 项目的意义与价值 从“非结构化视频”中挖掘“结构化洞察”的通用挑战 在当今的数字生态中&#xff0c;视频已成为信息传播、知识分享和消费者意见表达的核心媒介。从企业内部的会议录屏、技术培训&#xff0c;到外部的市场宣传…

Java全栈开发面试实录:从基础到实战的深度解析

Java全栈开发面试实录&#xff1a;从基础到实战的深度解析 面试官与应聘者的对话记录 第一轮&#xff1a;基础问题与项目背景 面试官&#xff08;中年男性&#xff0c;穿着整洁&#xff09;&#xff1a; 你好&#xff0c;欢迎来到我们公司。我是今天的面试官&#xff0c;可以先…

如何清除webview138、139版本软键盘占用的区域

好的&#xff0c;这个问题非常具体且关键。在 Android System WebView 的 138 和 139 版本&#xff08;基于 Chromium 113&#xff09;的上下文中&#xff0c;“清除软键盘占用的区域”通常意味着&#xff1a;在软键盘收起后&#xff0c;WebView 的布局或视口没有正确恢复&…

深度学习:卷积神经网络(CNN)

文章目录一、CNN 基础认知1.1 图像在计算机中的存储形式1.2 图像识别的核心需求&#xff1a;画面不变性1.3 传统神经网络的局限二、CNN 核心原理&#xff1a;三大核心层与关键操作2.1 卷积层&#xff08;1&#xff09;什么是卷积操作&#xff1f;&#xff08;2&#xff09;卷积…

iOS 26 正式版即将发布,Flutter 完成全新 devicectl + lldb 的 Debug JIT 运行支持

在之前的 《Flutter 又双叒叕可以在 iOS 26 的真机上 hotload》 和 《Flutter 在 iOS 真机 Debug 运行出现 Timed out *** to update》 我们聊过&#xff0c;由于 iOS 26 开始&#xff0c;Apple 正式禁止了 Debug 时 mprotect 的 RX 权限&#xff0c;导致了 Flutter 在 Debug 运…

机器学习全流程拆解 _ 从数据到模型的科学之道

-—— 避开80%项目失败的隐形成本&#xff0c;掌握高效建模方法论*&#x1f4cc; 一、明确目标&#xff1a;成败的起点 1. 问题定位 分类任务&#xff1a;区分二分类/多分类/多标签分类预测任务&#xff1a;标量预测&#xff08;如房价&#xff09;vs 向量预测&#xff08;如股…

Android 广告轮播全实现:图片与视频混合展示的完整方案

广告轮播是移动应用中提升用户转化率的核心组件&#xff0c;尤其在电商、资讯类应用中应用广泛。传统轮播仅支持图片展示&#xff0c;而现代应用需要兼顾图片和视频内容以增强吸引力。本文将详细讲解如何实现一个支持图片与视频混合播放的高性能广告轮播&#xff0c;涵盖布局设…

AI大模型企业落地指南-笔记01

前言AI技术的发展趋势必然是越来越普及&#xff0c;越来越“技术平权”的。在未来10年内&#xff0c;AI将以各种方式“融入”人类世界&#xff0c;与人类乃至世界深度融合。一. 概念第1章 AI与大模型概述1.1 什么是AI人工智能&#xff08;全称Artificial Intelligence&#xff…

Linux-孤儿进程和僵死进程

文章目录孤儿进程概述僵死进程概述孤儿进程 概述 父进程运行结束&#xff0c;子进程还在运行&#xff0c;此时&#xff0c;子进程就成了孤儿进程&#xff08;Orphan Process&#xff09;每当出现一个孤儿进程的时候&#xff0c;内核就把孤儿进程的父进程设置为 init &#xf…

【Redis 进阶】----主从复制(重点理解流程和原理)

在分布式系统中为了解决单点问题&#xff08;某个服务器程序只有一个节点&#xff08;只搞一个物理服务器来部署这个服务器程序&#xff09;。可用性不高&#xff1a;如果这个机器挂了意味着服务就中断了&#xff1b;性能 / 支持的并发量比较有限&#xff09;。通常会把数据复制…

【Redisson】redis最佳实践-RedissonUtils+Caffeine

RedissonUtils - 企业级 Redis 缓存工具库 - 二级缓存 项目地址: hhttps://gitee.com/chen934298133/redisson-utils问题反馈: Issues邮箱: chen934298133163.com &#x1f4d6; 项目简介 RedissonUtils 是一个基于 Redisson 的企业级 Redis 缓存工具库&#xff0c;提供了完…

QT(QTableWidget)

QT6QTableWidget QTableWidget是一种Item Widget组件&#xff0c;它以表格形式和管理数据&#xff0c;表格的每个单元格关联一个QTableWidgetItem对象&#xff0c;可以设置每个单元格的文字内容、字体、文字颜色、背景色、图标等&#xff0c;还可以有复选框。每个单元格还可以存…

Sentinel相关记录

系列文章目录 draft Sentinel 是阿里巴巴开源的 轻量级服务防护组件&#xff0c;主要用于实现以下功能&#xff1a;流量控制FlowRule&#xff08;Rate Limiting&#xff09;&#xff1a;限制单位时间内的请求量&#xff0c;防止系统过载。 熔断降级DegradeRule&#xff08;Ci…

2025年渗透测试面试题总结-29(题目+回答)

安全领域各种资源&#xff0c;学习文档&#xff0c;以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具&#xff0c;欢迎关注。 目录 二百四十一、XSS 设置Http-Only如何绕过 二百四十二、XSS攻击手段分类 二百四十三、高杀软覆盖工作组的渗…

如何用Wireshark捕获当前房间路由器和主机的数据包

一、前期工作 在我的这篇文章中&#xff1a; Wireshark USRP联合波形捕获&#xff08;上&#xff09;-CSDN博客 通过192.168.1.103这个主机ip筛选Wireshark捕获的数据包&#xff0c;认为Source和Direction中至少一个包含192.168.1.103才能代表路由器和主机之间的WiFi信号。 …