[应用相关] [RT-Thread读书笔记二] RTT移植

[复制链接]
 楼主| goodbaiy 发表于 2019-6-2 11:40 | 显示全部楼层 |阅读模式
本人手上有原子哥的战舰板,也有STnucleo-429板,考虑到经典的移植只涉及到LED和串口,所以决定使用nucleo-429板子来移植。
首先使用STM32CUBE配置引脚并生成源码。由于nucleo板的ST ZIO接口的串口是串口2且映射到PD5\PD6两口,所以配置是要按照上述情况选择配置。串口配置成异步模式,不配置中断。
由于直接使用hal库,为了使用hal库的串口发送函数,定义一个uint8_t out_char[20];数组
并增加代码如下:
1.png
编译、下载到板子,运行结果led闪烁,串口输出结果
2.png
现在建立RT-Thread工程,将所需要的文件复制到工程文件加下,我是在主目录下新建了一个RTT文件夹,并把相关资料复制到该文件夹下。
3.png
在工程组中新建KernelCORTEX_M4两个文件夹,并增加相应文件。
4.png
添加头文件路径,比书中多一步的是增加“rtconfig.h”文件路径。
5.png
编译提示错误,两个函数重复定义。我们把cube生成的it文件中的函数删除(另一个是.s文件内的,我搞不定,只能修改cube生成文件)
6.png
再次编译,提示rt_hw_board_init函数没有定义。由于我们使用cube生成文件,自然是没有这个函数的。
7.png
我们自己处理一下。把cube自动生成的初始化函数打包复制到自定义的rt_hw_board_init函数中。
8.png 9.png
编译成功,下载到板子上,跟原程序基本相同。led闪烁,串口反复输出10

现在配置时钟。
cube生成的main.cstm32f4xx_it.c中添加头文件包含#include "rtthread.h"

增加代码如下:
10.png
11.png
12.png
现在使用rt的延时函数运行一下程序,为了观察方便,我们把串口的结果调整为带时间戳的十六禁止显示。结果如下:
14.png
可以看到,原输出是0.5S一次,之后是1s一次,时钟配置成功。

现在实现控制台输出。
对照书本,由于rt系统使用的串口输出是bsp_uart_send函数,我们自己写一个(使用uart2),并编写其他相应代码。
15.png
16.png
编译,下载查看输出。
17.png
控制台输出成功。

最后实现动态堆内存管理。
增加和调整代码如下。

rtconfig.h中增加宏定义
18.png
主函数的初始化增加动态内存初始化部分
19.png
主函数中增加相应的宏定义,并变更代码为:
20.png
编译,下载查看输出。
21.png
与书上相同,动态内存管理ok。

以上是我根据书上的内容,移植RTT到NUCLEO-429板子的过程,希望路过的大神批评指正。谢谢!

wangjiahao88 发表于 2019-6-2 20:11 | 显示全部楼层
这个帖子 真好啊!
 楼主| goodbaiy 发表于 2019-6-3 08:18 来自手机 | 显示全部楼层
wangjiahao88 发表于 2019-6-2 20:11
这个帖子 真好啊!

我不过是按照书上讲的内容,在429板子上做了一遍。有几个地方是我自己用hal库生成代码改的,大神看看有什么不足的地方指导一下呗
shu_007 发表于 2019-6-3 08:35 来自手机 | 显示全部楼层
厉害!!!!!!!值得学习!
royal90 发表于 2019-6-3 09:29 | 显示全部楼层
不错,有料。。。。
 楼主| goodbaiy 发表于 2019-6-3 20:54 来自手机 | 显示全部楼层
shu_007 发表于 2019-6-3 08:35
厉害!!!!!!!值得学习!

大家一起学习
 楼主| goodbaiy 发表于 2019-6-3 20:54 来自手机 | 显示全部楼层
royal90 发表于 2019-6-3 09:29
不错,有料。。。。

一起学习一下吧
renzheshengui 发表于 2019-6-18 12:15 | 显示全部楼层
支持国产操作系统
wakayi 发表于 2019-6-18 12:43 | 显示全部楼层
为什么我觉的书里边的代码有点缺失呢
wowu 发表于 2019-6-18 12:48 | 显示全部楼层
非常感谢楼主分享
您需要登录后才可以回帖 登录 | 注册

本版积分规则

13

主题

75

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部

13

主题

75

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部