STM32标准库移植FREERTOS

1.获取FreeRTOS源码  

  我是从正点原子获取的源码-版本是202112.00

  大家也可以从官网下载:https://www.freertos.org/

2.准备工程文件

在工程文件中创建专门的FreeRTOS文件夹

图片

  • inc:用于保存保存 FreeRTOS 中的头文件,也就是我们常说的‘.h 文件’
  • port:用于保存内存管理以及处理器架构相关代码
  • scr:保存 FreeRTOS 中的核心源文件,也就是我们常说的‘.c 文件’

 3.移植需要的文件---inc头文件

图片

 将Source-include中的所有头文件复制到inc中(除了stdint.readme文件)

图片

  4.移植需要的文件---scr头文件

将Source中的核心源文件复制掉scr中

 

图片

图片

   4.移植需要的文件---FreeRTOSconfig.h头文件

在Demo文件中找到对应芯片和平台的文件夹,将FreeRTOSConfig.h复制到工程文件FreeRTOS下面

图片

FreeRTOSConfig.h:v>

FreeRTOS 的配置文件,比如选择调度算法:
configUSE_PREEMPTION
每个 demo 都必定含有 FreeRTOSConfig.h
建议去修改 demo 中的 FreeRTOSConfig.h,而不是从头写一个

    4.移植需要的文件---port文件

从portable-MenMang复制内存管理文件

图片

 heap_1到heap_5根据需求选择一个就可,每个.C里面都有重复定义,导入工程文件编译时会显示重复定义

图片

 

再从portable-RVDS中复制不同架构在不同平台的移植文件

使用的是F103系列属于ARM_CM3架构,在Keil平台开发。

图片

点开KEIL文件夹,告知我们和RVDS一样,所有我们直接去复制RVDS内容到工程中的port文件夹

最终FrerRTOS文件夹内容如下:

 

 

图片

 

图片

 

图片

5.在KEIL工程文件中导入---记得头文件位置也要导入

图片

 6.修改配置

首先在FreeRTOSConfig.h中三个宏定义

图片

 然后在stm32f10x_it.c中将这三个注释掉

图片

 7.验证移植是否成功

  先加入头文件

#include "FreeRTOS.h"
#include "task.h"   
#include "queue.h"

   写一个LED翻转任务:

TaskHandle_t myTaskHandler;
void myTask(void *arg)
{        while(1)
        {
            GPIO_SetBits(GPIOD,GPIO_Pin_2);
            vTaskDelay(500);
            GPIO_ResetBits(GPIOD,GPIO_Pin_2);
            vTaskDelay(500);
        }
}

 

   主函数:

TaskHandle_t myTaskHandler;
void myTask(void *arg)
{        while(1)
        {
            GPIO_SetBits(GPIOD,GPIO_Pin_2);
            vTaskDelay(500);
            GPIO_ResetBits(GPIOD,GPIO_Pin_2);
            vTaskDelay(500);
        }
}

使用Keil仿真查看端口电平变化

图片

看到电平翻转表示任务执行成功

 

具体视频讲解:可以看看b站up主Sliuam 

我也是跟着Sliuam步骤移植的

posted on 2025-08-25 18:07  Aliang2020  阅读(459)  评论(0)    收藏  举报