FreeRTOS实战——一、基于HAL库项目的FreeRTOS移植步骤
FreeRTOS实战——一、基于HAL库项目的移植步骤
文章目录
- FreeRTOS实战——一、基于HAL库项目的移植步骤
- 前言
- 一、下载和移植FreeRTOS
- 二、系统文件配置
- 2.1 FreeRTOSConfig.h中添加如下3个配置:
- 2.2 修改stm32f1xx_it.c
前言
废话不多说,在FreeRTOS基础:核心概念与入门指南中我们学习了FreeRTOS的概念,Github目录结构,如何创建一个新的项目。但是如何进行实际电脑操作呢,这里我们一起学习如何一步步配置,放心,以下流程在本机电脑上编译通过,0错误
一、下载和移植FreeRTOS
下载链接:FreeRTOS Github
-
学到了FreeRTOS,相信大家已经有了点灯的项目文件。我们在根目录下创建文件夹
FreeRTOS
,里面创建两个文件夹为portable
和source
-
复制FreeRTOS的Source文件夹的7个.c文件到你的source文件夹下
-
复制FreeRTOS源码portable文件夹下的Keil、RVDS、MemMang到你的portable文件夹下
-
其中RVDS文件夹下保留对应你的开发芯片内核,复制FreeRTOS源码include文件夹到你的FreeRTOS文件夹下
-
复制源码目录
..\FreeRTOS\Demo\CORTEX_STM32F103_Keil
中的FreeRTOSConfig.h
到你喜欢的位置,我的是Core\Inc
-
将FreeRTOS/Source和FreeRTOS/Portable添加到工程中
-
Source添加你的FreeRTOS中source的.c文件
-
Portable添加portable/MemMang中的heap_4.c和RVDS最里面的port.c文件
- 添加
FreeRTOSConfig.h
头文件
- 添加以下两个目录,指定头文件目录
二、系统文件配置
2.1 FreeRTOSConfig.h中添加如下3个配置:
#define xPortPendSVHandler PendSV_Handler
#define vPortSVCHandler SVC_Handler
#define INCLUDE_xTaskGetSchedulerState 1
2.2 修改stm32f1xx_it.c
- 引入头文件
#include “FreeRTOS.h”
#include “task.h” - 注释两个函数
SVC_Handler
和PendSV_Handler
- 添加SysTick函数
申明extern void xPortSysTickHandler(void);
在SysTick_Handler
中添加
if (xTaskGetSchedulerState() != taskSCHEDULER_NOT_STARTED)
{
xPortSysTickHandler();
}
完成