FreeRTOS移植

获取源码

官网下载
官网地址:https://www.freertos.org/
在这里插入图片描述
选择202212.01版本下载。

FreeRTOS移植步骤

在工程的根路径下,新建“FreeRTOS”文件夹,并且在里面新建“portable”和“source”两个空文件夹。
在这里插入图片描述
拷贝FreeRTOS源码portable文件夹下的Keil、RVDS、MemMang到例程的portable文件夹下。
在这里插入图片描述
Keil不拷贝也可以
其中例程的MemMang可只保留heap_4.c:
在这里插入图片描述
其中例程的RVDS可只保留ARM_CM3(对应我们的芯片内核)。
在这里插入图片描述
最终
在这里插入图片描述
FreeRTOSConfig.h 文件是 FreeRTOS 的工程配置文件,因为 FreeRTOS 是可以裁剪的 实时操作内核,应用于不同的处理器平台,用户可以通过修改这个 FreeRTOS 内核的配置 头文件来裁剪 FreeRTOS 的功能,所以我们把它拷贝一份放在 user 这个文件夹下面。
在源码“…\FreeRTOS\Demo”文件夹下面找到 “ CORTEX_STM32F103_Keil ” 这个文件夹下,找到 “FreeRTOSConfig.h”文件,然后拷贝到我们工程下的 “Core/Inc” 文件夹下即可,等下我们需要对这个文件进行修改。
在这里插入图片描述

工程添加源码文件

FreeRTOS/Source添加.c文件
在这里插入图片描述
FreeRTOS/Portable添加port.c和heap_4.c文件。
在这里插入图片描述
配置头文件
在这里插入图片描述
头文件包含
在这里插入图片描述

系统配置文件修改

FreeRTOSConfig.h中添加如下3个配置:

#define xPortPendSVHandler  PendSV_Handler
#define vPortSVCHandler     SVC_Handler
#define INCLUDE_xTaskGetSchedulerState   1

修改stm32f1xx_it.c

  1. 引入头文件
/* Private includes ----------------------------------------------------------*/
/* USER CODE BEGIN Includes */
#include "FreeRTOS.h"
#include "task.h"
/* USER CODE END Includes */
  1. 注释掉2个函数
// void SVC_Handler(void)
// {
// }

// void PendSV_Handler(void)
// {
// }

在这里插入图片描述

在这里插入图片描述

  1. 添加SysTick时钟中断服务函数
void SysTick_Handler(void)
{
    /* USER CODE BEGIN SysTick_IRQn 0 */

    /* USER CODE END SysTick_IRQn 0 */
    HAL_IncTick();
    /* USER CODE BEGIN SysTick_IRQn 1 */
    if (xTaskGetSchedulerState() != taskSCHEDULER_NOT_STARTED) 
    {
        xPortSysTickHandler();
    }
    /* USER CODE END SysTick_IRQn 1 */
}

在上面声明

/* Private variables ---------------------------------------------------------*/
/* USER CODE BEGIN PV */
extern void xPortSysTickHandler(void);
/* USER CODE END PV */

在这里插入图片描述

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值