赞
踩
本文参考自[野火EmbedFire]《RT-Thread内核实现与应用开发实战——基于STM32》,仅作为个人学习笔记。更详细的内容和步骤请查看原文(可到野火资料下载中心下载)
先从野火的资料里拷贝一份STM32裸机工程模板,我的芯片型号为STM32F103ZET6,可以从指南者这款开发板的资料里寻找工程模板,由于我手上的开发板只是一个核心板,外设只有LED和按键,所以我选用按键实验的工程作为工程模板:
Nano是Master的精简版,只有OS的核心功能,没有丰富的组件和各种开发板的BSP,但不影响我们使用。
Nano版本下载地址:https://www.rt-thread.org/download/mdk/,这其实是一个Keil的外部包,选择最新版本下载即可。
.pack文件下载完成后,直接安装,记住安装的路径,待会需要在该路径复制RT-Thread源码。
下面这些文件就是RT-Thread的源代码,这里不作介绍,详细请查看《RT-Thread内核实现与应用开发实战——基于STM32》原文或网上查找资料。
因为RT-Thread源码占用空间不大,我们可以直接将源码拷贝到Keil工程中(原文中提示:使用这种方法打包的 RT-Thread 工程,拷贝到一台没有安装 RT-Thread Package 的电脑上面是使用不了的,会提示找不到 RT-Thread 的源文件)。
我直接将源码文件夹拷贝到了工程目录:
下图是原文对RT-Thread源码目录的简介,版本是3.0.3,不过目录结构和最新版基本相同(3.15版本没有include/libc)。
我们还需要将bsp/
里的rtconfig.h
和board.c
两个文件单独拷贝到user/
目录,rtconfig.h
是用来配置RT-Thread一些基本参数的头文件,board.c
则用来进行一些硬件底层的配置和初始化(配置系统时钟、系统心跳等)。
3.15版本的bsp/
内容如下:
由于我所用的芯片型号为STM32F103,所以我在stm32f103-blink/
里面找那两个文件,当然,其他文件夹里的rtconfig.h
和board.c
都差不多,到时都要修改。【个人理解:这些文件夹对应的应该是开发板,里面已经有它们的DEMO工程】
我直接将bsp/stm32f103-blink/RTE/RTOS/
下的两个文件复制到了工程的User/
目录。
复制完这两个文件夹,整个bsp/
都可以删除了。【因为这个文件夹里是各个芯片厂家的库文件,大小达到了30M,但本工程已经有了STM32的固件库,不需要其他库了。】
有了RT-Thread源文件和配置文件后,还需要将它们添加到Keil工程中,可以参照野火的添加方式(见下图),不过这些文件当前都是只读权限,rtconfig.h
和board.c
两个文件是一定要取消可读的。
最后,不要忘记添加相关的包含路径:
rtconfig.h
主要用来配置和裁剪RT-Thread,具体内容这里就不讲解了,感兴趣的可以去查看原文的介绍。rtconfig.h
有两种编辑方式,一种是文本编辑,另外一种是向导式的编辑。
这里使用文本编辑的方式,参照原文进行修改,修改部分如下图所示:
borad.c
存放一些硬件初始化函数,要想让RT-Thread在STM32上跑起来,这里的函数必须修改好。
该文件需要进行如下修改:
"board.h"
头文件(后面创建)修改完board.c
后,我们还需要新建一个board.h
文件,内容如下:
#ifndef _BOARD_H_ #define _BOARD_H_ #include "stm32f10x.h" #include "bsp_led.h" //#include "bsp_usart.h" #include "bsp_key.h" void rt_hw_board_init(void); void SysTick_Handler(void); #endif
此时编译工程,会报以下三个错误:
这些都是重复定义造成的,解决方法是将Usr/stm32f10x_it.c
里的这三个函数都进行屏蔽(注释)。
再次编译,没有任何报错和警告。
只有在使用 HAL 库时才需要添加 core_delay.c 和 core_delay.h 文件。由于我不打算使用HAL库,所以这部分内容就不进行记录了,详情可以查看原文。
因为现在只是在移植系统,并没有实现具体功能,所以main函数空着就行,不过在main函数运行之前,系统已经启动,这方面知识先不深究,当前我的目标只是学习RT-Thread的应用。
#include "board.h"
#include "rtthread.h"
int main(void)
{
/* 暂时没有在 main 线程里面创建任务应用线程 */
}
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。