02.移植FreeRTOS到STM32

目录

1准备工作

1.1获取STM32的裸机工程

1.2下载FreeRTOS 源码

2FreeRTOS文件夹内容简介

3移植FreeRTOS到STM32

3.1提取FreeRTOS最简源码

 3.2拷贝FreeRTOSConfig.h文件到User文件

 3.3添加FreeRTOS源码到工程分组

 3.4指定FreeRTOS头文件的路径


1准备工作

1.1获取STM32的裸机工程

        这里选择最简单的用固件库点亮LED程序即可。裸机项目就是不包含操作系统的项目工程,随便找一个之前stm32开发使用的项目文件即可,这里以点亮 LED 的项目工程为例。

02.移植FreeRTOS到STM32_第1张图片 图1-1 裸机工程目录

 

1.2下载FreeRTOS 源码

        点击下载链接:FreeRTOS链接,进入FreeRTOS官网首页,点击“Download FreeRTOS”,选择 FreeRTOS 202112.00 进行下载。

02.移植FreeRTOS到STM32_第2张图片 图1-1 FreeRTOS下载界面

2FreeRTOS文件夹内容简介

        下载的 FreeRTOS 202112.00 文件夹大小约为80M左右,将其解压可以看到如下图所示的文件夹列表。

02.移植FreeRTOS到STM32_第3张图片 图2-1 FreeRTOS 202112.00 压缩包解压文件列表

        我们工程移植用到的是 FreeRTOS 文件夹中内容。

02.移植FreeRTOS到STM32_第4张图片 图2-1 FreeRTOS 文件夹内容
表2-1 FreeRTO文件介绍
文件夹名称

3移植FreeRTOS到STM32

3.1提取FreeRTOS最简源码

        FreeRTOS文件夹较大,内部很多东西,在单一工程中用不到,所以要进行选择。

       1) 在LED项目工程中创建FreeRTOS文件夹,并创建src、port文件夹,inlucde文件夹可以直接从下载的FreeRTOS源码文件夹中Source文件夹下inlcude直接复制。

02.移植FreeRTOS到STM32_第5张图片 图3-1 FreeRTOS文件

         2)将图3-2中框选文件复制到src文件夹中。

02.移植FreeRTOS到STM32_第6张图片 图3-2 Source 文件夹内容

        3)在portable文件夹中,选择与Keil开发环境相关的文件RVDS, 其中Keil文件夹中已说明,RVDS和Keil一致;选择与内存管理相关的文件夹MemMang复制到新建的port文件中。

02.移植FreeRTOS到STM32_第7张图片 图3-3 portable文件夹内容

 3.2拷贝FreeRTOSConfig.h文件到User文件

        FreeRTOSConfig.h是FreeRTOS工程配置文件,用于不同的处理器平台,用户可以修改FreeRTOS内核配置文件来裁剪FreeRTOS的功能。 

02.移植FreeRTOS到STM32_第8张图片 图3-4 FreeRTOSConfig.h所在文件目录

 3.3添加FreeRTOS源码到工程分组

        在工程中创建FreeRTOS/src和FreeRTS/port分组,并添加FreeRTOS的源码。在选择接口文件port.c是在RVDS中选择,这里以STM32F103为例,由于是Cotex-M3内核,所以选取Cotex-M3文件夹中的port.c文件;而内存管理文件选择 MeMang文件夹下heap4.c。

02.移植FreeRTOS到STM32_第9张图片 图3-5 添加FreeRTOS源码后的项目文件

 3.4指定FreeRTOS头文件的路径

         添加FreeRTOS的头文件——inlcude和RVDS中ARM_CM3中的“.h”文件路径。

02.移植FreeRTOS到STM32_第10张图片 图3-6 添加FreeRTOS头文件路径

        到目前为止,已经移植完毕,编译项目发现会报错,xTaskGetCurrentTaskHandle未定义,但是在task.c文件中可以找到该函数定义

Undefined symbol xTaskGetCurrentTaskHandle

,        看宏定义两个条件满足其一才会定义该函数,右击变量名,Go To Definition,发现两变量都宏定义为0。 将二者其一改为1 ,则可编译成功,之前利用野火提供的FreeRTOS v9.0源码并不报错,并且宏定义都是为0。有懂得大佬可以解答一下(这里做下标记,如果以后知道了,再进行修改)

02.移植FreeRTOS到STM32_第11张图片 图3-7 task.c部分源码

你可能感兴趣的:(FreeRTOS,stm32,单片机,arm,FreeRTOS,嵌入式硬件)