FreeRTOS移植(两种方法:CubeMX配置/自行移植)

RTOS,即实时操作系统(Real time operating system)

它并非指代某一款特定的操作系统,而是一类操作系统的统称。

像 uc/OS、FreeRTOS、RTX、RT - Thread 等,都归属于 RTOS 类操作系统。

FreeRTOS 是一款小型的实时操作系统内核,具备轻量级的特性。

它涵盖了任务管理、时间管理、信号量、消息队列、内存管理、记录功能、软件定时器、协程等诸多功能,

这些功能基本能够满足小型系统的需求。

由于 RTOS 运行时需要占用一定的系统资源,特别是对随机存取存储器(RAM)资源有要求

因此只有 μC/OS - II、embOS、salvo、FreeRTOS 等少数实时操作系统,能够在内存容量较小的单片机上稳定运行。

FreeRTOS 是一款应用于嵌入式系统的 RTOS,具备以下优势:

  • 开源免费:开源,采用 MIT 许可证,可免费使用、修改、分发。
  • 轻量级:设计注重轻量,适用于资源受限系统,不占过多内存和处理器资源 。
  • 应用广泛:在工业自动化、医疗设备、消费电子、汽车电子等嵌入式领域广泛应用。
  • 多平台支持:可移植性强,能轻松移植到不同硬件平台,支持多种处理器架构。
  • 功能丰富:提供多任务调度、任务通信、同步等功能,适用于复杂嵌入式场景。

一、以下为STM32F103C8T6为例在STM32CubeMX上,引入FreeRTOS创建工程

裸机的时钟源默认是SysTick,但是开启FreeRTOS后,FreeRTOS会占用SysTick

用来生成1ms定时,用于任务调度,所以需要为其他的总线提供另外的时钟源,例如使用TIM1~TIM4

V2内核版本更高,功能更多,大多数情况下V1版本完全够用。

以下为FreeRTOS的核心配置介绍:

二、自行移植FreeRTOS

下载好后解压缩,点击进入FreeRTOS

点击进入Source

步骤:

1.在例程目录结构中新建文件夹,起名FreeRTOS,将需要移植的文件移入其中

2.将上图中所述Source中的include文件夹,portable文件夹(或者只复制其中所需文件夹)和所有的.c文件复制进去

3.如上图所示,根据实际情况在Demo中选择所需文件下,复制FreeRTOSConfig.h, 可放在工程的Core里的Inc下。(不管放在哪,只要在环境配置里面的include路径能找到它)

4.在kill中添加源码文件

  

5.系统配置文件修改

在 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 */

 2.注释掉两个函数

//void SVC_Handler(void)
//{
//}

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

3.在SysTick_Handler函数中添加 SysTick 时钟中断服务函数

if (xTaskGetSchedulerState() != taskSCHEDULER_NOT_STARTED) 
{
    xPortSysTickHandler(); 
}

在前面引用extern void  xPortSysTickHandler(void); 

以上为自行移植的方法,如果出现问题,可尝试在.io文件中将systick改为TIM,修改工程系统时钟依赖的时钟源

本文所述内容为本人通过网络自学后归纳所得,仅服务于个人复习与学习需求,无任何商业应用意图。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值