基于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,所以我们先去修改时钟配置。
重点要关注的是这几行代码:

// 原本的代码使用的HSI
RCC_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;

// 修改成HSI
RCC_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,更耐用。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分