【STM32】CubeMX(十三):RT-THREAD

本篇博客描述的是 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信號。 …