FreeRTOS学习 -- 移植

本文介绍了如何在基础工程中添加FreeRTOS源码,包括配置文件的移植、添加相关头文件路径,以及对SYSTEM文件中sys.h、usart.c和delay.c的修改,以支持FreeRTOS并确保正确处理任务切换和延时功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、添加FreeRTOS源码

在基础工程中新建一个名为FreeRTOS的文件夹,创建FreeRTOS文件夹以后将FreeRTOS的源码添加到这个文件夹中。
在这里插入图片描述
portable 文件夹,只需要保留keil、MemMang 和 RVDS这三个文件夹,其他的都可以删除掉。
在这里插入图片描述
移植FreeRTOSConfig.h文件,它是FreeRTOS 的配置文件,一般的操作系统都有裁剪、配置功能。而这些裁剪及配置都是通过一个文件来完成的,基本都是通过宏定义来完成对系统的配置和裁剪的。
在这里插入图片描述

二、添加相关的头文件路径

在这里插入图片描述

三、修改SYSTEM文件

SYSTEM文件夹中的文件一开始是针对 μC/OS编写的,因此使用 FreeRTOS的话,就需要作相应的修改。SYSTEM文件夹中一共需要修改三个文件,分别是 sys.h、 usart.c、 delay.c。

1、修改 sys.h 文件

在 sys.h 文件里面用宏 SYSTEM_SUPPORT_OS 来定义是否使用 OS。
在这里插入图片描述

2、修改 usart.c 文件

添加 FreeRTOS.h 头文件
在这里插入图片描述
在 USART1 的中断服务函数,删除OSIntEnter()和 OSIntExit()
在这里插入图片描述

3、修改 delay.c 文件

  • 函数 SysTick_Handler(),此函数是滴答定时器的中断服务函数。
    在滴答定时器中断服务函数中调用 FreeRTOS 的 API 函数 xPortSysTickHandler()
    在这里插入图片描述
  • delay_init()是用来初始化滴答定时器和延时函数
    FreeRTOS 的系统时钟节拍由宏 configTICK_RATE_HZ 来设置,这个值我们可以自由设置,但是一旦设置好以后我们就要根据这个值来初始化滴答定时器。
    在这里插入图片描述
  • delay_us、delay_ms、delay_xms 三个延时函数
    delay_us()是 us 级延时函数,delay_ms 和 delay_xms()都是 ms 级的延时函数,delay_us()和 delay_xms()不会导致任务切换。delay_ms()其实就是对 FreeRTOS 中的延时函数 vTaskDelay()的简单封装,所以在使用 delay_ms()的时候就会导致任务切换。
    在这里插入图片描述
    至此,SYSTEM 文件夹就修改完成了。
    这些其实都有例程可以参看。
    在这里插入图片描述
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

聚优致成

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值