前期准备:从官网下载 RT-Thread Studio,弄个账号登陆,开启rt-thread学习之旅。
rt-thread有标准版和nano版两种版本,标准版支持丰富的软件包和各种组件,而nano版本仅支持msh shell功能,这次就创建标准版本的rtt工程,以便后面更方便的使用软件包,选择rtt版本如图所示:
也可以使用图标来新建,如图所示:
在上一步点击“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 | 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中手动修改此文件 |
在前面初创工程的时候有提示说:默认的时钟使用的是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就出现了,图标上有个/,表示该项不会被构建,要恢复就鼠标右键此项,将此项选择加入构建,如图所示:
恢复之后,/号就消失,重新构建工程,查看是否有配置错误。 构建成功,那么一个工程就新建好了,可以开始后面对具体外设、内核、组件和软件包的配置了。
在调试或者下载程序之前,需要先去配置调试下载器,如图所示:
点击图中红圈中的下拉图标进行配置,根据自己实际情况选择即可。
基于开发板的和基于芯片的思路是一样的,只是基于开发板的会有更多厂商的芯片可以选择,不过他们对于驱动的支持可能没有ST那样好,很多驱动需要自己去完成。
双击RT-Thread Settings进入配置界面:
点击红圈中的左拉箭头,进入细节配置:
在这里可以配置内核的参数,比如Tick频率、堆栈、线程通信、内存管理等等,按需配置,和FreeRTOS中修改FreeRTOSConfig.h类似的功能。
经过上面一顿操作后,接下来就是构建工程,让现象呈现出来。 编译工程
打开调试串口,观察现象
可以看到rt-thread成功跑起来,可以在终端中使用各种命令,比如:help,ps等命令,方便开发者使用。
总之:rh-thread的官方工具还是挺好用,点点鼠标就能把相关的底层配置好,让用户专注自己的业务,可以加快让产品落地,不过想要做优化等工作,就需要研究rt-thread的源码了,只有对其源码理解透,做出来的产品才能牛x,更耐用。
全部0条评论
快来发表一下你的评论吧 !