基于STM32F103ZET6的FreeRTOS移植-固件库

一、前言

从简单的一些任务状态机再到复杂一些的RTOS,再到最复杂的Linux,这些都属于嵌入式操作系统的一种,只是简单与复杂的区别。在之前,我们开发STM32时采用的都是裸机开发所以对实时系统并没有什么概念,接触RTOS会接触到一种新的编程方式。当然,因为RTOS已经引入了系统的概念了,所以代码看起来与调试起来也更加抽象。但,就现在而言,实时操作系统仍然是许多公司要求嵌入式工程师必会的技能之一。所以,如果你准备好了,让我们一起来移植RTOS。

二、下载固件包

1.搜索FreeRTOS

在这里插入图片描述

2.切换中文,点击下载按钮

在这里插入图片描述

3.选择2022版本,点击Download

推荐选择2022版本,这个版本稳定一些
之后直接点击Download
在这里插入图片描述
固件包百度网盘
固件库迅雷资源

4.下载完成,完成后的文件夹

解压后的文件夹
在这里插入图片描述

三、移植Free RTOS文件

1.创建RTOS文件夹,并创建IncSrcPort

这里的Inc文件夹用来存放RTOS的头文件和配置文件,Src用来存放RTOS的源文件,Port用来存放RTOS的内存管理文件。
在这里插入图片描述

2.移植Src文件的7个.c程序

这里我们首先将“Source”文件夹下的7个.c的文件复制到工程目录中创建的“RTOS\Src”文件夹下:
在这里插入图片描述

3.移植固件包的Include文件

把“Source”文件夹的“include”文件夹下的所有.h的文件复制到“RTOS\Inc”文件夹下
在这里插入图片描述

4.移植heap_4.h

“portable”文件夹下的“MemMang”文件夹,将“heap_4.c”文件复制到工程目录下的“RTOS\Port\MemMang下”:
在这里插入图片描述

5.移植M3

经过查询F103Zet6的内核时M3
在这里插入图片描述

6.移植Free RTOSConfig.h

在对应板子的模板程序中移植Free RTOSConfig.h系统配置文件
ps:FreeRTOSConfig.h 是一个用户级别的配置文件,不属于内核文件。每个用户可以有不同的FreeRTOSConfig.h,从而实现不同的功能配置。
在这里插入图片描述

四、配置RTOS文件

1.添加RTOS文件夹

在这里插入图片描述

2.添加.h路径

在这里插入图片描述

3.添加文件

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

五.程序修改

1.Free RTOSConfig.h文件添加三个宏
/* 添加必须的三个宏*/
#define xPortPendSVHandler  PendSV_Handler
#define vPortSVCHandler     SVC_Handler
#define INCLUDE_xTaskGetSchedulerState   1

在这里插入图片描述

2.在stm32f10xx_it.c文件中注释掉重复定义的“PendSV_Handler”,“SVC_Handler”,

ps:编译会报两个错误
在这里插入图片描述
注释掉
在这里插入图片描述

3.配置stm32f10xx_it.c文件中SysTIck_Handler

首先添加头文件和外部函数

#include "FreeRTOS.h"
#include "task.h"
extern void xPortSysTickHandler( void );

在这里插入图片描述
接着配置Systick函数

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

在这里插入图片描述

六、创建demo程序

FreertosConfig配置可以看这个人的,挺详细的
首先要选择Use MicroLIB不然调试会卡在main函数前
在这里插入图片描述

2.如果时C8T6移植的话要改一下尺寸

在这里插入图片描述
请添加图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值