移植准备
源码准备
软件准备
STM32CubeMX
Keil5
Xshell
Scons
Python
开始移植
把源码解压到一个没有中文路径的文件夹,我就解压到
D:\software\workspace\rt-thread
进入
bsp\stm32
这些bsp都是一些厂商自己的开发板,rtthread官方给这些板子写好了bsp。我用的板子是普中科技STM32F103ZET6的板子,rtthread官方没有写这个板子的bsp,但是官方例程里面有正点原子的板子,也是STM32F103ZET6,为以下这个
stm32f103-atk-warshipv3
那么就根据这个例程为模板,删删改改适配普中科技的板子。
在这我就把无关的bsp删除掉,上一级目录的除了stm32其他芯片厂商的也删掉。
再把例程名字改成
00-stm32f103-prechin
前面00序号方便之后bsp修改的版本迭代,文件夹名字不要有中文,最好也不要有空格。
修改CubeMX工程
打开00-stm32f103-prechin文件夹,再进入board\CubeMX_Config文件夹,打开CubeMX工程,检查CubeMX里面配置了什么资源。
时钟和定时器采用默认就可以了,因为都是同一款芯片的。检查串口引脚,也是用了uart1(PA9,PA10)和普中的板子一样,也不用修改。如果修改过,就重新生成HAL代码就可以了。
修改keil工程
回到00-stm32f103-prechin目录,打开project.uvprojx工程,编译一下,出现了报错
.\build\keil\Obj\rt-thread.axf: error: L6002U: Could not open file
.\build\keil\obj\msh_cmd.o: No such file or directory
没找到msh_cmd这个文件,打开资源目录。
确实msh_cmd.c这个文件没找到,到rt-thread根目录搜一下,也都没找到这个文件(可能官方漏了这个文件),那就不管了,把这个文件排除出编译。再编译一下,不报错了。
下载程序
因为我用J-Link下载程序,就要配置对应的J-Link的下载算法和debug。没有J-Link的话,那就另算下载.bin或者.hex了。
在魔法棒中修改debug。
点击setting,进去。
点击Add,选中对应的下载算法。
下载程序进板子。接上调试的串口,连接上串口工具(我用的Xshell),复位开发板。
出现了这个logo,OK啦,基本的移植已经完成。
但是系统运行后,我这个板子上,蜂鸣器一卡一卡的响,我就想到了,可能原本正点原子的例程应该的点灯,刚好那个灯的引脚就是我这板子上蜂鸣器的引脚。回去检查代码,发现正如前面猜测。修改主函数里面,LED引脚为我这板子的LED引脚,再编译下载,灯也开始亮了,移植就这样完成了。
#include <rtthread.h>
#include <rtdevice.h>
#include <board.h>
/* defined the SYS_LED pin: PB5 */
#define SYS_LED GET_PIN(C, 7)
int main(void)
{
int count = 1;
/* set SYS_LED pin mode to output */
rt_pin_mode(SYS_LED, PIN_MODE_OUTPUT);
while (count++)
{
rt_pin_write(SYS_LED, PIN_HIGH);
rt_thread_mdelay(500);
rt_pin_write(SYS_LED, PIN_LOW);
rt_thread_mdelay(500);
}
return RT_EOK;
}
结尾
rtthread学习中,打开主页查看更多笔记