20170812在STM32F103RB上测试RTT硬实时OS

来源:互联网 发布:java如何让窗口置顶 编辑:程序博客网 时间:2024/05/19 17:48

作为业余单片机爱好者,虽然从事硬件开发行业,也对软件代码产生兴趣,但一直苦于寻找一个适合自己兴趣的软硬件平台;然而软件平台也好,硬件平台也罢;在无数的平台之间徘徊,摇摆不定。
RTT在好几年前就有耳闻,一款由国内专业人士打造的硬实时嵌入式系统。官网:
http://www.rt-thread.org有详细的介绍,最近有一直在看一些相关的信息,了解一些特点。趁周末有空,打算在手上的开发小板上尝试一下;
1,准备工作:
a.下载RTT 软件包,目前版本v2.1,官网有链接
b.一个MDK 4.0以上的IDE环境,我用的是4.22.15.0
MDK版本
c.一块开发板,我手上是stm32f103RB,外部晶振12Mhz,想必已经滥大街了吧,不过最近貌似听说,ST的单片机在涨价,而且交期延长
d.JLINK 版本V8,使用其SW接口与开发板连接
2,用MDK打开解压的RTT软件包对应的BSP文件夹下stm32f10x下的工程文件;因为RTT默认的示例是基于stm32f103ZE,而且外部时钟为8.0Mhz,所以要按以前的方式修改下配置文件;
a.修改RTT自带的ST官方库里stm32f10x.h中外部晶振为12Mhz,找到如下位置:
大概119行,注释掉原来的8Mhz,修改为12;
修改外部晶振

 #define HSE_VALUE    ((uint32_t)12000000) /*!< LY-S3A stm32 external crystal 12.0Mhz */

b.因为stm32f103ze和stm32f103Rb flash和sram有差异,同样作相应修改;找到board.h文件,大概37行处,将原来的STM32_SRAM_SIZE 64改为20,ZE系列是64KB,而Rb系列为20KB
flash差异

SRAM修改

#define STM32_SRAM_SIZE         20 /*stm32f103RB SRAM:20KB*/

c.MDK target configure option设置,将103ze换为103RB,外部时钟也改了12M,最后jlink下载方式改 为SWD,下载配置文件替换为128K的中密度flash即可;
修改中密度flash配置文件
3,根据开发板修改初始化代码,包括LED引脚和串口引脚;
示例中用到了2个LED端口和串口UART1,我的开始跟它串口相同,所以不用修改串口;在led.c文件里面,大概29行位置,else后面的两个GPIO修改为对应我的开发板的两个led控制io,这里注意,是低电平亮灯的逻辑;
LED逻辑

LED配置修改

#else//#define led1_rcc                    RCC_APB2Periph_GPIOE//#define led1_gpio                   GPIOE//#define led1_pin                    (GPIO_Pin_2)#define led1_rcc                    RCC_APB2Periph_GPIOA#define led1_gpio                   GPIOA#define led1_pin                    (GPIO_Pin_8)  //LY-S3A LED0 PA8//#define led2_rcc                    RCC_APB2Periph_GPIOE//#define led2_gpio                   GPIOE//#define led2_pin                    (GPIO_Pin_3)#define led2_rcc                    RCC_APB2Periph_GPIOD#define led2_gpio                   GPIOD#define led2_pin                    (GPIO_Pin_2)  //LY-S3A LED1 PD2#endif // led define #ifdef STM32_SIMULATOR

到此,基本工作做完,编译一把。这里会不通过,可能是2.1版本的RTT还不够完整,canapp.c编译会报错,由于测试代码里没有使用到这部分,我选择直接用空白文档覆盖了canapp.c,然后编译通过;烧录到开发板上,LED开始闪烁起来,串口要设置为115200,8N1,串口终端就可以看到RTT的启动信息,如图;
RTT启动&测试
作为最让人眼前一亮的特点,RTT有CLI的人机交互,这一点我觉得很有逼格!当然,它还有其它的很多特长,硬实时,还有GUI,还有网络协议LWIP,让它更像一个完善的操作系统,可玩性我觉得一点都不比zephyr低。
当然,除了支持stm32的单片机外,其它的CPU也有在跟进如图:
硬件CPU支持
之前了解了多种开发模式,基于ubuntu的也好,fedora的也罢,交叉编译环境搭建起来相当麻烦,作为非软件开发人员,入门门槛无疑高了放多,加上它是国产,有中文技术支持,比去嚼那些一篇篇的英文着实方便了许多。

原创粉丝点击