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 文件夹

  这里主要是存放与硬件相关的初始化函数

 

posted @ 2023-05-11 12:32  哈啰世界  阅读(684)  评论(0编辑  收藏  举报