目录
官方下载FreeRTOS的源码
官方网址https://www.freertos.org 进入官网点击下载FreeRTOS
准备基础工程
首先我们需要准备一个基础的工程项目,其中需要注意的是要将延时时钟基准由SysTick换成TIM,因为FreeRTOS会使用SysTick作为时钟基准
将FreeRTOS源码添加进工程
新建文件夹,将下载好的源码复制到工程中,同时删除portable与RVDS文件夹中多余的文件,注意好我打开源码的路径,将里面这些东西复制到自己工程中新建的文件夹里
复制好之后我们需要整理一下不用的文件,打开portable,保留我选中的三个文件,如果用IAR就删除keil,MemMang是关于内存的一些文件,RVDS则是关于我们单片机架构的一些文件,我这里用的是STM32F103ZET6,则将RVDS中除了这款单片机的其他架构全部删除,只保留ARM-M3内核,只删文件夹啊,不是文件夹的不要删
然后我们进入工程,在工程中新建两个Group,一个用来储存RTOS源码,一个用来存放关于端口的文件,源码我们除了两个文件夹以外全部添加进去
端口的则是分两部分,把我们的单片机内核文件先添加进来,再选择一个内存添加
最后不要忘记添加一下路径
编译一下发现有九个错误,错误的原因是打不开FreeRTOSConfig.h头文件,在FreeRTOS源码中打开Demo,根据路径找到这个头文件,复制粘贴进去我们自己用于储存模块化代码的文件夹中就行
最后我们在FreeRTOSConfig.h头文件中添加一下我们需要用到而系统没有的宏定义
#define xPortPendSVHandler PendSV_Handle
#define xPortSysTickHandler SysTick_Handle
#define xPortSVCHandler SVC_Handler
只有这样RTOS才能和我们的STM32单片机的中断系统联系起来
我们为什么要手动移植呢,方便移植到其他单片机上
使用STM32CubeMX来移植FreeRTOS
左侧选择Middleware选项卡,选中FreeRTOS然后Interface选择CMSIS_V1配置参数默认即可
Disable - 禁用FreeRTOS
CMSIS_V1 - CMSIS_RTOS的版本为V1.02 一般选择这个
CMSIS_V2 - CMSIS_RTOS的版本为V2.0 兼容更多架构,但是代码量会变大
别忘记把基准时钟换成TIM
然后我们在CubeMX中添加任务 选择Task and Queues选择默认任务,然后调整任务,注意任务名称和任务函数的名称不可以相同,点击OK就创建了一个任务了
最后生成工程保存编译一下就可以使用了