打印
[应用相关]

[RT-Thread读书笔记二] RTT移植

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

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

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

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

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

rtconfig.h中增加宏定义
主函数的初始化增加动态内存初始化部分
主函数中增加相应的宏定义,并变更代码为:
编译,下载查看输出。
与书上相同,动态内存管理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 | 只看该作者
厉害!!!!!!!值得学习!

使用特权

评论回复
5
royal90| | 2019-6-3 09:29 | 只看该作者
不错,有料。。。。

使用特权

评论回复
6
goodbaiy|  楼主 | 2019-6-3 20:54 | 只看该作者
shu_007 发表于 2019-6-3 08:35
厉害!!!!!!!值得学习!

大家一起学习

使用特权

评论回复
7
goodbaiy|  楼主 | 2019-6-3 20:54 | 只看该作者
royal90 发表于 2019-6-3 09:29
不错,有料。。。。

一起学习一下吧

使用特权

评论回复
8
renzheshengui| | 2019-6-18 12:15 | 只看该作者
支持国产操作系统

使用特权

评论回复
9
wakayi| | 2019-6-18 12:43 | 只看该作者
为什么我觉的书里边的代码有点缺失呢

使用特权

评论回复
10
wowu| | 2019-6-18 12:48 | 只看该作者
非常感谢楼主分享

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

13

主题

75

帖子

1

粉丝