基于STM32CubeMX与RT-Thread的入门体验教程
本入门体验教程将指导你如何基于 STM32CubeMX
生成的工程,手动移植 RT-Thread
源码,并进行基础开发。关于如何使用 STM32CubeMX
创建工程,可以参考网上的相关教程,也可以参考本博客的文章《STM32CubeMX创建MDK工程》。
1. 创建RT-Thread工程目录
首先,新建一个文件夹来存放RT-Thread
的文件,这里我们将其命名为 rtos
。
2. 拷贝RT-Thread Nano源码
从RT-Thread
官网上下载 RT-Thread Nano
源码,将以下必要的文件夹拷贝到上一步新建的 rtos
文件夹中:
相关文件夹说明如下:
bsp
:板级支持包(在当前示例中,只使用到board.c
和rtconfig.h
,其他文件可以删除)components
:组件文件夹include
:头文件目录libcpu
:处理器相关的启动文件(对于STM32F103,只需保留cortex-m3
文件夹,其他文件可以删除)src
:内核源码
3. 添加源码到工程中
将上述五个文件夹的所有内容添加到新建的 rtos
文件夹中,并将其添加到Git版本控制中。
4. 精简工程
删除上述文件夹中与当前芯片平台无关的文件和板级支持包,以精简工程。
5. 设置只读属性
将RT-Thread
相关的不需要修改的文件(除 board.c
和 rtconfig.h
外)设置为只读属性,以确保这些文件不会被误修改。(可选)
6. 添加RT-Thread源文件到MDK工程
在MDK
工程中,添加RT-Thread
的源文件。
Kernel:
Ports:
命令行组件 Finsh
:
boardConfig:
7. 添加头文件路径
在MDK
工程中,添加RT-Thread
的头文件路径。
8. 编译工程
编译工程时,可能会遇到重复定义的错误。
- 解决方案:删除、注释或预编译掉
stm32f10x_it.c
中的相关函数。
9. 解决重定义错误
解决上述错误后,再次编译,确保工程编译成功。
10. 解决找不到RTE_Components.h的问题
如果编译时遇到找不到 RTE_Components.h
头文件的错误,可以在 rtconfig.h
中注释掉包含该头文件的行或直接删除。
11. 烧写与测试
编译成功后,将程序烧写到开发板。如果只有一次串口信息输出,需要修改为使用RT-Thread
内定义的延时函数。
12. 包含RT-Thread头文件
在工程的头文件中,添加RT-Thread
的头文件包含。
13. 创建线程管理文件
添加一个新的 C
文件,用于统一创建线程。
14. 包含新增头文件
将新增的头文件包含到主头文件中。
15. 声明并实现动态线程创建函数
实现动态线程创建函数。
16. 调用动态线程创建函数
在主函数中,调用动态线程创建函数。
17. 编译与烧写
编译通过后,将程序烧写到开发板,确认线程正常启动,每隔1
秒输出一次调试信息。
18. 声明静态线程创建函数
添加静态线程创建相关函数声明。
19. 实现静态线程创建函数
添加静态线程创建相关函数实现。
20. 调用静态线程创建函数
在主函数中,调用静态线程创建函数。
21. 编译与烧写确认
最后,编译工程并烧写到开发板,确认线程正常运行。
以上就是基于STM32CubeMX
与RT-Thread
的入门体验教程,通过这些步骤,您可以成功地将RT-Thread
移植到您的STM32
工程中,并实现基本的线程动态和静态创建、管理。希望这篇教程能为您的嵌入式开发之路提供帮助。
对应的 demo
源码, 请点击 RtosExPro at rtt_try_to_experience
也可扫码关注博主同名公众号"不解之榬",回复 “RTT” 获取