FreeRTOS移植到Stm32F103库函数版本(Keil)

总述

FreeRTOS本质上就相当于平常我写的一个串口或LED程序,我们要用的话就是把相关头文件和c文件加入工程里,然后像调用函数一样调用FreeRTOS的相关函数就可以调用操作系统的相关功能了。

移植过程可概括为三带一加1。三是个文件夹里的内容,分别为inclede、core、portble。一是一个配置文件FreeRTOSConfig.h。加1是对中断函数进行修改

Include

该文件夹包含的是FreeRTOS的所有头文件,在FreeRTOS官方源码如图所示文件夹中,直接复制即可

FreeRTOS移植到Stm32F103库函数版本(Keil)

Core

该文件夹是操作系统的内核文件,编程时会调用的函数基本都在这里的文件定义,如图直接复制即可,一共有6个文件

FreeRTOS移植到Stm32F103库函数版本(Keil)

Portable

该文件夹是移植相关的文件一共有3个文件如图

这两个是与ARM内核相关的

FreeRTOS移植到Stm32F103库函数版本(Keil)

这个是内存管理相关的,选择其中一个文件就好

FreeRTOS移植到Stm32F103库函数版本(Keil)

FreeRTOSConfig.h

该文件是用来对操作系统进行剪裁的配置文件,在如图文件夹中

FreeRTOS移植到Stm32F103库函数版本(Keil)

修改中断函数

SVC、PendSV的中断函数上述复制的文件中已经有定义了,所以需要注释掉,void SysTick_Handler(void)中断函数是ARM内核自带的滴答定时器中断函数修改如图所示,当然文件中还要包含#include "FreeRTOS.h",#include "task.h"这两个头文件

FreeRTOS移植到Stm32F103库函数版本(Keil)

编译

开始编译,移植就完成了。当然有可能还会有警告,因为操作系统中可以调用断言函数,断言函数会调用串口打印函数,这里我们并没有包含撮口打印的头文件,不过这样并不影响操作系统功能,所以可以忽略,也可以包含进去,如图

FreeRTOS移植到Stm32F103库函数版本(Keil)

仿真

随便创建了一个串口打印任务仿真结果如图

FreeRTOS移植到Stm32F103库函数版本(Keil)

下载链接

该模板是在正点原子的基础上修改的

蓝奏云链接