FreeRTOS移植到Stm32F103库函数版本(Keil)
总述
FreeRTOS本质上就相当于平常我写的一个串口或LED程序,我们要用的话就是把相关头文件和c文件加入工程里,然后像调用函数一样调用FreeRTOS的相关函数就可以调用操作系统的相关功能了。
移植过程可概括为三带一加1。三是个文件夹里的内容,分别为inclede、core、portble。一是一个配置文件FreeRTOSConfig.h。加1是对中断函数进行修改
Include
该文件夹包含的是FreeRTOS的所有头文件,在FreeRTOS官方源码如图所示文件夹中,直接复制即可
Core
该文件夹是操作系统的内核文件,编程时会调用的函数基本都在这里的文件定义,如图直接复制即可,一共有6个文件
Portable
该文件夹是移植相关的文件一共有3个文件如图
这两个是与ARM内核相关的
这个是内存管理相关的,选择其中一个文件就好
FreeRTOSConfig.h
该文件是用来对操作系统进行剪裁的配置文件,在如图文件夹中
修改中断函数
SVC、PendSV的中断函数上述复制的文件中已经有定义了,所以需要注释掉,void SysTick_Handler(void)中断函数是ARM内核自带的滴答定时器中断函数修改如图所示,当然文件中还要包含#include "FreeRTOS.h",#include "task.h"这两个头文件
编译
开始编译,移植就完成了。当然有可能还会有警告,因为操作系统中可以调用断言函数,断言函数会调用串口打印函数,这里我们并没有包含撮口打印的头文件,不过这样并不影响操作系统功能,所以可以忽略,也可以包含进去,如图
仿真
随便创建了一个串口打印任务仿真结果如图
下载链接
该模板是在正点原子的基础上修改的