打印
[STM32F4]

【f446re开发板试用】RT-Thread 移植

[复制链接]
1461|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
    RT-Thread是一款国产的开源嵌入式实时操作系统,相对于ucos,它有一个finsh shell系统,它可以除了完成一般shell的功能外,甚至还可以自定义命令,这个功能十分惊艳,而且该系统的维护团队专门为各种mcu单独开发分支,这也为我们的移植提供便利,RT-Thread基于stm32芯片一共有4个分支,分别为F0、F1、F2、F4各一款芯片设置分支。由于stm32芯片各系列兼容性非常好,所以在stm32f446上的移植也不用费多大力气。
   RT-Thread最新稳定版是2.02版,从官网上下载好源码之后,我们可以在bsp文件夹下面看到有一个stm32f40x的分支,这是专门为f407芯片而设立的一个分支,在这个分支的基础上吧RT-Thread移植到F446上。
首先在st官网上下载最新版的外设库,我移植所用到的外设库是1.5.1版,最新的应该是1.6以上的版本了,不过1.5.1已经可以支持到F446了。下载好后,对stm32f40x文件夹Libraries下的文件进行替换,这个文件夹主要是放置一些外设库和启动文件等等,启动文件我们用startup_stm32f446xx.s替换startup_stm32f4xx.s。
在boart.h里面配置好一些关于芯片的信息,比如sram,finsh使用的串口等等

编译通过就ok啦,


由于finsh使用串口2,故把PA2、PA3连接到stlink 的tx rx上,打开putty软件,设置好串口号、波特率上电就可以看到finsh已经运行起来了,不过前提是已经安装好stlink虚拟串口工具



按下TAB便可以返回当前有效的命令。
好像拿到新开发板第一个程序都是点灯呵呵,按照惯例还是点灯,可以看到里面有led_on和led_off两条命令,这个是根据nucleo板上面的用户led写的两条命令,可以利用对led灯进行操作,原理也是很简单,只要模仿系统的代码写出对应的就可以了


void led_on(void)
{
    rt_pin_mode(54,0);
          rt_pin_write(54,1);
          rt_kprintf("LED has been opened");
}
FINSH_FUNCTION_EXPORT(led_on,set_led_on);

void led_off(void)
{
    rt_pin_mode(54,0);
          rt_pin_write(54,0);
          rt_kprintf("LED has been closed");
}
FINSH_FUNCTION_EXPORT(led_off,set_led_off);


最后附上移植后的程序
stm32f446.zip (1.42 MB)
沙发
yklstudent| | 2015-10-21 16:01 | 只看该作者
挺牛的。。。。

使用特权

评论回复
板凳
mmuuss586| | 2015-10-21 18:57 | 只看该作者
不错,谢谢分享;

使用特权

评论回复
地板
聿怀嘿嘿|  楼主 | 2015-10-22 22:54 | 只看该作者
mmuuss586 发表于 2015-10-21 18:57
不错,谢谢分享;

感谢版主大人捧场!

使用特权

评论回复
5
android2| | 2015-10-24 19:22 | 只看该作者
RT-Thread没听说过啊,学习了

使用特权

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

本版积分规则

17

主题

451

帖子

5

粉丝