STM32裸机移植RT-Thread(标准版)
前言,因为我嫌正点原子stm32l475vet6(潘多拉)给的rt-thread太过臃肿,决定自己移植一遍(RT-Thread包来自正点原子中潘多拉例程)
参考了野火rt-thread的手册
1、建立工程文件夹,如下
Core |
Core/Inc Core/src |
用于存放用户自己的.c和.h文件 |
Drivers | Drivers/CMSIS Drivers/STM32L4xx_HAL_Driver |
CMSIS是存放库函数的,另一个是HAL库,设备驱动是直接放在Drivers文件下 |
MDK-ARM | 使用keil5创建工程自动生成的文件夹 | |
rt-thread |
rt-thread/components/finsh rt-thread/components/drivers rt-thread/include rt-thread/libcpu rt-thread/src |
finsh是一个好用的命令行工具 drivers包含rt-thred外设驱动.c和.h文件,例如spi、gpio.etc include包含rt-thread是相关头文件 libcpu包含支持的cpu系列,例如M0、M4之类 src包含源文件 |
rt-thread内核源码直接从正点原子给的例程中找
2、添加路径
在keil中相应分组中添加.c文件
具体的如下图所示:
主要放设备驱动,根据需要选择添加
对应上文的rtt/ports文件(改名了),存放cpu的支持包
rt-thread源文件
rt-thread设备驱动文件,与上文设备驱动有重合
3、拷贝 rtconfig.h 文件到 user 文件夹(很重要)
用户可以通过修改这个 RT-Thread 内核的配置头文件来裁剪 RT-Thread 的功能,但keil并不会自己给我们生成这样一个配置文件,所以需要手动移植
修改rtconfig.h
该头文件对裁剪整个 RT-Thread 所需的功能的宏均做了定义,有些宏定义被使能,有些宏定义被失能,一开始我们只需要配置最 简单的功能即可。要想随心所欲的配置 RT- Thread 的功能,我们必须对这些宏定义的功能有所掌握。
例如,这里定义了一些关于RT-Thread内核的宏,一般不需要修改
这里定义了线程间通信和同步的资源(信号量、互斥锁等)
总之,rtconfig.h部分根据自己的需要配置即可
如果,添加了相应的组件包,但编译器没有检测到相应的头文件,多半是由于忘记在这里头添加宏定义(踩过的坑)
4、拷贝 board.h和borad.c 文件到 user 文件夹
这里主要是存放与硬件相关的初始化函数