最近做一些验证实验的时候想使用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
|