基于RT-Thread Studio学习

1. 新建工程1.1 创建基于芯片的工程1.1.1 选择创建的rtt版本前期准备:从官网下载 rt-thread studio,弄个账号登陆,开启rt-thread学习之旅。
rt-thread有标准版和nano版两种版本,标准版支持丰富的软件包和各种组件,而nano版本仅支持msh shell功能,这次就创建标准版本的rtt工程,以便后面更方便的使用软件包,选择rtt版本如图所示:
也可以使用图标来新建,如图所示:
1.1.2. 配置工程基本属性在上一步点击“rt-thread项目”后,就进入了工程基本属性的配置界面,如图所示:
图中各项的作用描述如下表:
序号名称描述
① 工程名 指定新建工程的名称。如果不想让此工程保存在默认的工作空间内,可以将此栏下面的使用缺省位置去勾选然后指定工程的保存路径
② 工程模板 rt-thread studio支持两种模板,一种是基于芯片,另一种是基于开发板,基于芯片目前只有st公司的处理器支持的很好;基于开发板则有很多厂家提供他们的rtt bsp sdk
③ rt-thread内核版本 更新了rt-thread studio之后,选择最新版本即可
④ 厂商 rt-thread studio支持的芯片厂商,目前st处理器支持的最好
⑤ 芯片系列 st处理器有f1/f3/f4/f7/h7系列的mcu,根据实际情况选择
⑥ 芯片子系列 当选择号了芯片系列之后,芯片子系列就会列出该系列芯片的子系列,比如stm32f103系列
⑦ 芯片型号 根据芯片系列和芯片子系列就圈定了芯片型号的范围,我们在此范围内找到我们要开发的目标芯片,比如stm32f103ze
⑧ 控制台串口 就是msh shell功能使用的串口,这里指向我们板卡上用于输出调试信息的或者其它信息的串口,百问网的调试串口使用的是usart1,引脚是pa9和pa10
⑨ 调试器 调试芯片的工具,通常由j-link/st-link/daplink等,根据自己手里面的工具来选择
⑩ 调试接口 有jtag接口和swd接口,根据板卡的实际设计来选择
根据这些信息和我们板卡的实际情况,我的配置如下图所示:
然后点击完成,等待工程初创成功:
1.1.3. 初创工程目录结构工程初创成功后,得到如下图的工程,其目录结构如图所示:
每项对应的功能描述如下表:
序号名称描述
1 rt-thread settings rtt studio内置配置工具,可以配置内核、组件、软件包,并将配置保存生成到工程中
2 cubemx settings rtt stduio内置stm32cubemx工具,用以配置st处理器的外设
3 includes 其中展示了此工程包含使用的所有头文件
4 applications 其中包含了用户开发的应用层的源文件,默认包含了main.c,里面实现了main函数
5 drivers 里面包含了基于该芯片的外设驱动源文件和头文件,不一定所有的外设都支持,还有待持续维护开发。对于不支持的外设还是要用户自己去实现驱动函数
6 libraries 基于该芯片的库文件,一般是由厂商提供,rtt studio将其整理打包放到了工程目录结构中。在st芯片的工程中有cmsis和stm32xxx_hal_driver,前者是存放cmsis标准的头文件和库文件,后者是放stm32处理器的hal库文件
7 linkscripts 存放该芯片编译时的链接文件
8 rt-thread rtt的内核文件和组件、软件包源文件,使用rt-thread settings配置的内核、组件和软件包对应的源代码会在这一级中生效
9 rtconfig.h rtt的配置文件,用以表明会用到哪些内核机制、组件和软件包,使用rt-thread settings配置后会覆盖之前的改动,所以不建议在rtt studio中手动修改此文件
1.1.4. 修改时钟配置在前面初创工程的时候有提示说:默认的时钟使用的是hsi来配置系统时钟,如果要使用别的时钟源来配置系统时钟就要去修改drv_clk.c,我们的开发板有使用精度更高的hse,所以我们先去修改时钟配置。
重点要关注的是这几行代码:
// 原本的代码使用的hsircc_oscinitstruct.oscillatortype = rcc_oscillatortype_hsi;rcc_oscinitstruct.hsistate = rcc_hsi_on;rcc_oscinitstruct.hsicalibrationvalue = rcc_hsicalibration_default;rcc_oscinitstruct.pll.pllstate = rcc_pll_on;rcc_oscinitstruct.pll.pllsource = rcc_pllsource_hsi_div2;......rcc_oscinitstruct.pll.pllmul = rcc_pll_mul16;// 修改成hsircc_oscinitstruct.oscillatortype = rcc_oscillatortype_hse;rcc_oscinitstruct.hsestate = rcc_hse_on;rcc_oscinitstruct.hsepredivvalue = rcc_hse_prediv_div1;rcc_oscinitstruct.pll.pllstate = rcc_pll_on;rcc_oscinitstruct.pll.pllsource = rcc_pllsource_hse;......rcc_oscinitstruct.pll.pllmul = rcc_pll_mul9;如果不会自己配置系统时钟,可以使用stm32cubemx生成一个自己熟悉的工程,复制时钟相关的代码过来。 好多硬件相关的配置,使用工具stm32cubemx都帮我们做好了,直接用就行,没必要重新造轮子。
对着某些情况的资源,我们可以选择排除构建。
将某项排除构建后,该项就会从当前的工程目录被移除,但是还是存在工程文件夹中的,没有被删除掉。 如果想要恢复,可以去菜单栏打开“导航”,选择“打开资源”,如图所示:
然后点击左下角的“显示位置”,选择“c/c++项目”:
这样,在“项目资源管理器”的边上就有一个“c/c++项目”,如图所示:
可以看到外面之前选择排除构建的cubemx就出现了,图标上有个/,表示该项不会被构建,要恢复就鼠标右键此项,将此项选择加入构建,如图所示:
恢复之后,/号就消失,重新构建工程,查看是否有配置错误。 构建成功,那么一个工程就新建好了,可以开始后面对具体外设、内核、组件和软件包的配置了。
1.1.5. 配置调试下载器在调试或者下载程序之前,需要先去配置调试下载器,如图所示:
点击图中红圈中的下拉图标进行配置,根据自己实际情况选择即可。
1.2 创建基于开发板的工程基于开发板的和基于芯片的思路是一样的,只是基于开发板的会有更多厂商的芯片可以选择,不过他们对于驱动的支持可能没有st那样好,很多驱动需要自己去完成。
2. 配置内核双击rt-thread settings进入配置界面:
点击红圈中的左拉箭头,进入细节配置:
在这里可以配置内核的参数,比如tick频率、堆栈、线程通信、内存管理等等,按需配置,和freertos中修改freertosconfig.h类似的功能。
3. 下载验证经过上面一顿操作后,接下来就是构建工程,让现象呈现出来。 编译工程
打开调试串口,观察现象
可以看到rt-thread成功跑起来,可以在终端中使用各种命令,比如:help,ps等命令,方便开发者使用。
总之:rh-thread的官方工具还是挺好用,点点鼠标就能把相关的底层配置好,让用户专注自己的业务,可以加快让产品落地,不过想要做优化等工作,就需要研究rt-thread的源码了,只有对其源码理解透,做出来的产品才能牛x,更耐用。

电池公司Sila总融资达到3.4亿美元,与宝马和戴姆勒有合作
引入新一代传感器 会改善iphone上的AR功能
清华大学教授夏清:高弹性电网将有力支撑能源转型
LG投资3亿美元的化学大型偏光片生产项目落户广州
电工基础知识100问
基于RT-Thread Studio学习
数字化中台是企业数字化转型的利器
如何对大型建筑进行统筹能耗综合治理?
openharmony和安卓的关系
种子发芽箱的简单介绍
中国顶尖企业的战略核心,需要“谁”在幕后推动?
什么是对象存储,它的作用是什么
软方电子RK7002A(核心板)信息介绍
巨哥电子发布红外热成像人脸识别门禁一体机
一加5什么时候上市:一加5即将发布,网友吐槽一加3拍照问题,一加5能否一雪前耻?
气溶胶发生器MODEL 3990-01
巨资收购恩智浦 芯片巨头高通布局物联网背后的无奈
三星技术泄露 京东方等三家中国公司遭怀疑
智慧农业物联网系统都是由哪些部分设备组成的
360度旋转触屏 联想YOGA超极本10月开卖