嵌入式技术论坛
直播中

而无返还

8年用户 1203经验值
擅长:光电显示
私信 关注
[经验]

使用rtthread nano移植LED程序的步骤

最近做一些验证实验的时候想使用rtthread nano来做,这样在内存受限的MCU上也能使用。下面开始移植工作:

STM32CubeMX生成工程

使用ST官方的STM32CubeMX生成MDK工程,这里简单的生成一个LED闪烁的裸机工程即可。需要配置的是LED输出和按键输入引脚,以及串口uart1。
这里主要注意下时钟配置,我是用的是外部晶振。


然后就可以生成工程代码了

生成的逻辑程序编译,然后下载到开发板,确认程序正常运行,LED闪烁。

添加rtthread nano源码

参考官方移植文档,在Keil中添加thread nano。
主要是按照上面文档一步步做,然后编译程序,发现错误再修改。这里也实现了finsh,可以串口打印输出以及接收输入命令。
移植完下载到开发板确认程序正常运行,LED闪烁。

LCD移植

这部分是重点,在这里移植遇到了很多问题。
首先是添加精英开发板的lcd显示实验的lcd.c,lcd.h和font.h文件. 编译程序会发现很多错误,主要是数据类型定义和延时函数的问题。

这里需要替换数据类型定义和延时函数

修改完之后在board.c里面初始化LCD。

LCD_Init();

POINT_COLOR=RED; //画笔颜色:红色

LCD_Clear(WHITE);

程序下载后发现无法运行,因为刚才移植的LED程序没有问题,问题肯定出在LCD的初始化上。把LCD初始化放到main函数里面初始化,程序正常运行了。

开始之所以没有成功显示,应该是在lcd初始化之前没有完成FSMC和SRAM的初始化。main函数在rtthread里是等待系统及必要硬件初始化完成后才开始执行的,所以这是LCD初始化就没有问题了。

总结

thread nano移植和使用都非常方便,占用内存也小,适合内存小的MCU使用。

原作者:Kan

更多回帖

发帖
×
20
完善资料,
赚取积分