22、FreeRTOS 在 STM32 上的移植

     

         STM32 上可以移植很多优秀的操作系统,有了操作系统之后,第一,可以提高 CPU 的利用率,第二,可以更好

的利用多任务,从而实现不同功能模块的分离。这里介绍 FreeRTOS 的移植,FreeRTOS 是一个小型的高效的实

时操作系统,移植与使用都比较简单。FreeRTOS 可以去官网下载最新版 

https://sourceforge.net/projects/freertos/


1、拷贝 FreeRTOS 到 keil 的工程中

   找一个最简单的基于 keil 的 STM32 的工程,比如点亮 LED 小灯这种,越简单越好。将下载的 

FreeRTOS 拷贝到工程目录中。


2、在 keil 中创建相应的文件夹并添加文件

   22、FreeRTOS 在 STM32 上的移植_第1张图片

        其中,port.c 在 FreeRTOS\portable\RVDS路径下对应的文件夹里, 根据 CPU 架构去选择。

heap_2.c 在 FreeRTOS\portable\MemMang 目录下,。里面一共有5 个文件,分别对应不同的内存分配策

略。具体的每个分配策略详解,参见文章如下:

http://blog.csdn.net/zhzht19861011/article/details/51606068


   FreeRTOSConfig.h是系统的配置文件, 用于对系统的一些属性进行配置。需要根据具体的处理器去修改 

CPU 的主频大小,堆栈大小等参数。具体详解参见如下文章:

http://blog.csdn.net/zhzht19861011/article/details/50134883


3、修改三个中断函数声明

   在该系统中使用到了SVC_Handler、PendSV_Handler、SysTick_Handler 三个中断,只是名函数称做了

修改,因此首先要在stm32f10x_it.c 文件中将对应的中断处理函数声明删除, 否然后在FreeRTOSConfig.h 

文件的最后添加如下三个宏定义

#define vPortSVCHandler      SVC_Handler

#define xPortPendSVHandler   PendSV_Handler

#define xPortSysTickHandler   SysTick_Handler

   笔者在网上其他的移植文章里面是直接在启动汇编文件中去修改函数声明, 这样会破坏官网原生的汇编文件,

因此这里直接在配置文件里面去添加宏定义


4、 在keil 中把 FreeRTOS 相关路径添加到includepath 里面

22、FreeRTOS 在 STM32 上的移植_第2张图片

 

5、包含必要头文件

#include "FreeRTOS.h"

#include "task.h"

#include "queue.h"

#include "croutine.h"


到这里 FreeRTOS 基本移植结束了,可以去创建任务并启动调度了。



你可能感兴趣的:(STM32F1,开发)