首页 > 其他分享 >RT-Thread 体验教程:1.STM32CubeMX与RT-Thread的简易化学反应

RT-Thread 体验教程:1.STM32CubeMX与RT-Thread的简易化学反应

时间:2024-06-24 11:58:08浏览次数:22  
标签:RT 头文件 Thread 创建 STM32CubeMX 编译 线程

基于STM32CubeMX与RT-Thread的入门体验教程

本入门体验教程将指导你如何基于 STM32CubeMX 生成的工程,手动移植 RT-Thread 源码,并进行基础开发。关于如何使用 STM32CubeMX 创建工程,可以参考网上的相关教程,也可以参考本博客的文章《STM32CubeMX创建MDK工程》。

1. 创建RT-Thread工程目录

首先,新建一个文件夹来存放RT-Thread的文件,这里我们将其命名为 rtos
image.png

2. 拷贝RT-Thread Nano源码

RT-Thread官网上下载 RT-Thread Nano 源码,将以下必要的文件夹拷贝到上一步新建的 rtos 文件夹中:
image.png
相关文件夹说明如下:

  • bsp:板级支持包(在当前示例中,只使用到board.crtconfig.h,其他文件可以删除)
  • components:组件文件夹
  • include:头文件目录
  • libcpu:处理器相关的启动文件(对于STM32F103,只需保留cortex-m3文件夹,其他文件可以删除)
  • src:内核源码
3. 添加源码到工程中

将上述五个文件夹的所有内容添加到新建的 rtos 文件夹中,并将其添加到Git版本控制中。
image.png

4. 精简工程

删除上述文件夹中与当前芯片平台无关的文件和板级支持包,以精简工程。
image.png

5. 设置只读属性

RT-Thread相关的不需要修改的文件(除 board.crtconfig.h 外)设置为只读属性,以确保这些文件不会被误修改。(可选)
image.png

6. 添加RT-Thread源文件到MDK工程

MDK工程中,添加RT-Thread的源文件。
Kernel:
image.png
Ports:
image.png
命令行组件 Finsh
image.png
boardConfig:
image.png

7. 添加头文件路径

MDK工程中,添加RT-Thread的头文件路径。
image.png
image.png

8. 编译工程

编译工程时,可能会遇到重复定义的错误。
image.png

  • 解决方案:删除、注释或预编译掉 stm32f10x_it.c 中的相关函数。
    image.png
    image.png
9. 解决重定义错误

解决上述错误后,再次编译,确保工程编译成功。
image.png

10. 解决找不到RTE_Components.h的问题

如果编译时遇到找不到 RTE_Components.h 头文件的错误,可以在 rtconfig.h 中注释掉包含该头文件的行或直接删除。
image.png

11. 烧写与测试

编译成功后,将程序烧写到开发板。如果只有一次串口信息输出,需要修改为使用RT-Thread内定义的延时函数。
image.png
image.png

12. 包含RT-Thread头文件

在工程的头文件中,添加RT-Thread的头文件包含。
image.png
image.png
image.png

13. 创建线程管理文件

添加一个新的 C 文件,用于统一创建线程。
image.png

14. 包含新增头文件

将新增的头文件包含到主头文件中。
image.png

15. 声明并实现动态线程创建函数

实现动态线程创建函数。
image.png

16. 调用动态线程创建函数

在主函数中,调用动态线程创建函数。
image.png

17. 编译与烧写

编译通过后,将程序烧写到开发板,确认线程正常启动,每隔1秒输出一次调试信息。
image.png

18. 声明静态线程创建函数

添加静态线程创建相关函数声明。
image.png

19. 实现静态线程创建函数

添加静态线程创建相关函数实现。
image.png

20. 调用静态线程创建函数

在主函数中,调用静态线程创建函数。
image.png

21. 编译与烧写确认

最后,编译工程并烧写到开发板,确认线程正常运行。
image.png

以上就是基于STM32CubeMXRT-Thread的入门体验教程,通过这些步骤,您可以成功地将RT-Thread移植到您的STM32工程中,并实现基本的线程动态和静态创建、管理。希望这篇教程能为您的嵌入式开发之路提供帮助。

对应的 demo 源码, 请点击 RtosExPro at rtt_try_to_experience

也可扫码关注博主同名公众号"不解之榬",回复 “RTT” 获取
不解之榬

标签:RT,头文件,Thread,创建,STM32CubeMX,编译,线程
From: https://blog.csdn.net/LT450196683/article/details/139905892

相关文章

  • XILINX set_property BITSTREAM.CONFIG.CONFIGRATE
    起因在一个新的XILINXXCKU040FPGA设计中,SPI支持X8模式,此时BIT生成约束如下:#thehardwaresupportspix8,willbootfasterfromflash#set_propertyBITSTREAM.CONFIG.SPI_BUSWIDTH8[current_design]#set_propertyCONFIG_MODESPIx8[current_design]set_property......
  • C30 基础应用界面和应用程序(Part 6)
    本节导读演示如何使用JavaScript和Python设计和发布地球引擎应用程序。介绍地球引擎用户界面JavaScriptAPI和geemapPython包。在完成本节后,你将能够发布一个带有拆分面板地图的地球引擎应用程序,用于可视化土地覆盖变化。主要内容:使用JavaScript为地球引擎应用程序设计一个用......
  • fdisk时WARNING: Re-reading the partition table failed with error 16: 设备或资源
    WARNING:Re-readingthepartitiontablefailedwitherror16:设备或资源现象:划分磁盘有警告, WARNING:Re-readingthepartitiontablefailedwitherror16:设备或资源忙.Thekernelstillusestheoldtable.Thenewtablewillbeusedatthenextrebootoraft......
  • QEMU专栏 - 使用 QEMU 调试 FreeRTOS示例
    写在最前这几天一直在研究QEMU中多核ARM加载不同镜像的问题,一直不得其解,这部分后续可以分几个不分拆解下,看看为什么会出现这种问题.今天先来看看如何使用QEMU来调试FreeRTOS的示例代码.编译并运行FreeRTOS示例代码(基础版本)首先是下载代码,这种只需要看最新代......
  • 0day新接口 紫光电子档案管理系统DesignReportSave文件上传
     0x01阅读须知        技术文章仅供参考,此文所提供的信息只为网络安全人员对自己所负责的网站、服务器等(包括但不限于)进行检测或维护参考,未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作。利用此文所提供的信息而造成的直接或间接后果和损失,均由使用......
  • 玩转zencart自助搭建卖货商城,zencart外贸建站完全实操手册-36节课
    课程目录:1-你也可用zencart自助建站1.mp42-Zencart它能做什么1.mp43-Zencart使用所需环境和条件1.mp44-zencart环境工具xampp安装1.mp45-zencart安装演示1.mp46-模板切换不带mysql数据库1.mp47-手动配置带sql数据库模板1.mp48-网站标题关键词描述设置1.mp49-网站logo......
  • Quartz的简单使用:实现简单的定时任务
    在Quartz中,你可以定义和调度多个Job。每个Job都有对应的JobDetail和Trigger。1.添加依赖确保你的项目中包含Quartz的依赖。例如,如果你使用的是Maven,可以在pom.xml中添加以下依赖:<dependency><groupId>org.quartz-scheduler</groupId><artifactId>qu......
  • Day28.property使用part2
    1.property使用part2_多次调用类中的函数方法property用法,案例一代码如下:'''案例一'''classPeople:def__init__(self,name):self.__name=namedefget_name(self):returnself.__namedefset_name(self,val):......
  • [Java并发]Thread
    Java开启线程的四种方式实现runnable接口这个方法有一个很大的缺点就是重写的run方法是没有返回值的,如果想要返回值,需要使用下面的方法publicclassRunnableImplimplementsRunnable{/**创建步骤如下:*1,定义Runnable接口的实现类,并且实现run方法,这个方法......
  • AG32 MCU Start Kit 开发板快速入门及 21天体验活动
    AG32IDE开发环境搭建-完整版海振远科技2024-6-18AG32MCU开发板的使用使用准备在使用开发板前,请确认已经安装好开发环境。安装环境过程,请参考文档《AG32开发环境搭建.pdf》上电:给开发板5V供电,打开开关,可以看到电源旁边的小红灯亮起。使用example例程打开ex......