目录
官方下载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就创建了一个任务了

最后生成工程保存编译一下就可以使用了
本文详细指导如何从官方下载FreeRTOS源码,如何在STM32CubeMX中设置并移植FreeRTOS,包括基础工程配置、源码整理、配置FreeRTOSConfig.h和使用CubeMX创建任务。

284

被折叠的 条评论
为什么被折叠?



