【Clion+CubeMX开发STM32】(四)RTOS篇 创建RT Thread项目工程(ENV工具)

前言

前面几篇文章已经讲解了如何通过clion平台结合openOCD进行单片机开发,不过裸机开发并不能应对所有的开发场景,在复杂系统和高时效性的开发需求下,RTOS实时操作系统是单片机开发中必不可少的一环。
在cubeMX中可以很方便的添加freertos或者rt thread等实时操作系统内核到你的项目工程中,随用随加,以freertos为例,添加freertos到你的项目工程中去,只需在cubemx中勾选上freertos即可,甚至可以不修改时钟源,使用嘀嗒定时器也能运行。

不过,本篇文章主要介绍的是基于国产实时操作系统RT Thread及RT Thread软件包快速开发单片机项目。
RT Thread这里不过多讲解,感兴趣的朋友可以去看看RT Thread官网本文主要讲解如何使用RT Thread中的BSP源码通过ENV工具快速创建基于clion开发的项目工程,并通过env工具添加RT Thread在线软件包快速开发单片机项目。

准备

  1. clion嵌入式开发环境(clion cubemx git)
  2. RT Thread源码
  3. env工具
  4. 单片机
    clion的嵌入式开发环境前面几篇文章已经讲解完了,开始本篇之前,需要你的clion能够开发裸机项目。
    git在本篇是必要选项
    单片机我使用的是stm32f103RC,这个可以使用任意型号,只要是RT Thread支持的单片机包括且不限于stm32 gd32 apm32等,具体支持名单可以在BSP中查看或去官网查看。

下载RT Thread源码

打开RT Thread官网
在这里插入图片描述
在资源选项找到下载,随后在下载页面找到RT Thread源代码
在这里插入图片描述RT Thread提供多种下载方式,这里推荐选择gitee,点击gitee下载链接
在这里插入图片描述
选择标签,找到自己需要的RT Thread版本,我选择的是4.1.0版本,不建议大家选择最新版本或者低于4.0的版本
在这里插入图片描述
切换到4.1.0版本后,点击克隆,推荐git克隆,下载的zip压缩包文件可能会损坏或文件不全
复制克隆命令后,在电脑内创建新文件夹,将源代码克隆到本地

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

创建BSP工程模版

克隆完成后,关闭git,打开克隆到本地的源代码文件夹,找到BSP文件
在这里插入图片描述在bsp文件夹下可以看到rt thread具体支持的单片机,以stm32为例,找到stm32文件夹

ps:下载到本地的源代码,除了BSP文件,其他文件会参与到后续的scons编译,尽量不要乱删,如果下载的代码损坏了,可以重新在gitee上下载

在这里插入图片描述

选择需要你的单片机型号,比如我使用的单片机为stm32f103rc,选择任意stm32f103的bsp即可,这里以战舰为例,选择warshipv3
在这里插入图片描述
在该文件路径下打开env工具
在这里插入图片描述
输入命令,创建工程目录

scons --dist

在这里插入图片描述
可以看到输入命令后,bsp文件夹内多了dist文件夹,打开后找到project
在这里插入图片描述

移植模版工程

project文件夹就是我们基于bsp创建的项目工程,将其复制到clion工程存放的文件夹内,并修改名称
在这里插入图片描述
我这里将名称修改为rt_thread_env,修改后打开文件夹,并打开env工具
输入指令

scons --target=cmake

创建cmake工程

这一步可以在复制project文件夹前,在bsp目录下进行,然后将创建好cmake工程的文件夹复制过来,这样以后使用的时候可以省略这一步

在这里插入图片描述
完成后会发现工程中多了一个cmakelist
在这里插入图片描述
打开clion,打开该项目
在这里插入图片描述
配置工具链
工具链其实就是clion的嵌入式开发环境,前面的文章内有介绍
在这里插入图片描述
打开后点击右上角的小锤子进行构建
在这里插入图片描述
将编译用的cfg文件复制到工程目录中

stlink使用的cfg文件,前文有介绍
在这里插入图片描述
然后在clion中添加openocd
在这里插入图片描述
在这里插入图片描述
添加好后,即可使用stlink烧录工程到单片机上
在这里插入图片描述

修改模版工程

将工程移植完毕后,还需要修改一下芯片cubemx文件,因为战舰使用的是stm32f103ze,我这里使用的是stm32f103rc
打开board文件夹和CubeMX_Config文件夹,打开cubemx文件,这个路径很重要。
在这里插入图片描述
打开后查看project manager,记住这几个参数,等会儿修改完芯片后,新的工程需要添加这几个参数,一定要一致才能覆盖掉旧的工程
在这里插入图片描述
在这里插入图片描述
点击左上角修改芯片
在这里插入图片描述

这里需要开启一个串口,因为rt thread工程默认开启一个串口用于finsh组件,不开启串口的话,等会儿会报错
可以根据自己的板子打开led的gpio口,等会儿可以用于测试

在rt thread软件包内有seeger rtt软件包,使用后,可以将finsh组件以及打印通过jlink rtt显示

然后填写project manager,一定要和原来的参数移一致

路径一定要仔细查看,很容易出错

在这里插入图片描述

在这里插入图片描述

这里可以不用勾选,原来的bsp工程是没有勾选的,我个人习惯也建议大家勾选上,后面使用的时候会比较方便调用初始化函数

在这里插入图片描述
右上角点击生成,会提示有一个存在的工程,询问是否覆盖,选择是
在这里插入图片描述

完成后点击close,回到clion中
在这里插入图片描述
如果正确覆盖的话,工程文件内会出现gpio.c等相关外设源文件
在board文件夹下找到SConscript文件

如果没有勾选生成外设.c .h文件的话,可以跳过该步骤

在这里插入图片描述
打开SConscript,找到src路径,将外设gpio.c usart.c等添加进去
在这里插入图片描述

打开cmakelist.txt将外设文件路径添加进去,并点击右上角重新加载cmake

在上面的SConscript内添加好后,可以不用手动在cmakelist.txt中添加
可以通过env工具,再次scons生成一遍cmake工程即可
后续添加自己的代码文件夹时,会详细讲解这里的机制

在这里插入图片描述

打开cubemx生成的main,c文件,将其中引用的头文件和初始化函数复制到rt thread的main.c中
在这里插入图片描述
在这里插入图片描述
将cubemx中的main,c内的main函数和时钟函数,添加__weak修饰
如果不添加的话,会报错,时钟函数在board.c中已经包含有
在这里插入图片描述
完成后点击右上角的编译

测试

在main.c中添加LED闪烁代码
在这里插入图片描述
编译下载后,实现两个LED灯闪烁

menuconfig添加软件包

上面已经移植创建完成我们需要的工程了,但是如果只是这样开发的话,那就没有必要这样移植创建rt thread工程了,之所以要这么麻烦的从BSP移植工程,就是为了能够通过env工具添加rt thread的在线软件包。
而且通过env工具可以更加方便我们管理工程中的RT Thread,可以从容的裁切、管理rt thread
这里对于env工具不做过多介绍,仅测试添加在线软件包。
在项目工程下打开env工具,输入

menuconfig

在这里插入图片描述
随后会跳出menuconfig
在这里插入图片描述
选择第三项RT-Thread online packages

在这里插入图片描述
在这里可以找到所有的在线软件包,添加一个软件包测试一下,以seeger rtt为例
在这里插入图片描述
选中之后,按esc退出
在这里插入图片描述
选择yes保存
然后在env中输入

pkgs --update

输入后,env便会下载软件包到工程中
在这里插入图片描述
每次通过menuconfig添加或修改工程后,都需要重新生成一次cmake,这样才能更新cmakelist文件,否则编译时不会编译修改的内容
在这里插入图片描述

回到clion
在这里插入图片描述
找到seeger rtt中的帮助文档
在这里插入图片描述
这里可以看到该软件包的使用详情
在这里插入图片描述
在这里插入图片描述

根据readme.md中的提示完成配置
然后编译烧录程序
打开jlink rtt查看finsh组件是否正常显示

添加用户代码文件夹

当项目开发逐渐复杂之后,我们需要在项目中添加自己的用户代码,在工程内创建.c源文件和.h头文件后,将其添加到cmakelist.txt中才能使其参加编译。我们的rt thread工程的cmakelist,txt,文件是通过env工具由scons编译生成的。
如果我们手动添加到cmakelist中的话,在下一次scons编译后,手动添加的部分会全部被删除。

所以我们需要编写SConscript文件来管理我们的用户代码文件夹,以便进行scons编译时,能将用户代码添加到cmakelist中参加cmake编译构建。

方法很简单,在rt thread的官方文档中,有如何编写SConscript的说明
官方文档说明
在这里插入图片描述
大家可以参照官方文档来编写SConscript,也可以直接复制main.c所在文件夹内的SConsript文件。

总结

一 下载BSP源码 scons --dist创建工程模版
二 scons --target=cmake创建cmake工程
三 修改cubemx并修改SConscript
四 修改cmakelist
五 menuconfig修改RT Thread
六 pkgs --update scons --target=cmake

  • 29
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

注意沈题!

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值