移植FreeRTOS到STM32

FreeRTOS的内核应用如何使用?优先级如何分配以及内部IPC通信是如何使用的?

准备工作:

裸机例程,FreeRTOS的源码

首先下载FreeRTOS源码:

代码托管网址为:https://sourceforge.net/projects/freertos/files/FreeRTOS/

选择上图的文件进行下载即可。

下面对文件夹中的文件进行分析

其中1,3种包含的是FreeERTOS的通用文件和C文件 ,这两部分的文件适用于各种编译器和处理器

需要移植的头文件放在2中

打开2号文件夹:

2号文件夹中包含的是和内存管理相关的

打开3号文件夹,包含了处理器相关的文件,其中包含M0,M3,M4系列,FreeRTOS是一个软件  单片机是一个硬件,所以需要关联在一起,通过接口文件关联在一起,不同硬件的接口文件不同,但是大同小异,编写这些接口文件的过程我们叫做移植,移植好的接口文件放在RVDS这个文件夹目录下。

 MenMang文件夹中的内容:

几个heap文件中的加内容是内存的分配方法

Demo文件夹中是各种板子的Demo,不懂可以参考官方的Demo

 

在裸机工程中添加FreeRTOS源码:

在裸机工程模板的文件夹下新建名为src和port的文件夹用于保存FreeRTOS的核心源文件

 

1. 打开 FreeRTOS V9.0.0 源码,在“ FreeRTOSv9.0.0\FreeRTOS\Source ”目录下找到
所有的‘ .c 文件’,将它们拷贝到我们新建的 src 文件夹中

2.打开 FreeRTOS V9.0.0 源码,在“FreeRTOSv9.0.0\FreeRTOS\Source\portable”目

录下找到“ MemMang ”文件夹与“ RVDS ”文件夹,将它们拷贝到我们新建的
port 文件夹中

3.将Source的目录下找到include文件夹,这里是FreeRTOS需要用到的头文件,将它拷贝到新建的FreeRTOS中,至此RTOS的源码提取完成

 拷贝FreeRTOSConfig.h文件夹到user文件夹中:

FreeRTOSConfig.h 文件是 FreeRTOS 的工程配置文件,因为 FreeRTOS 是可以裁剪的
实时操作内核,应用于不同的处理器平台,用户可以通过修改这个 FreeRTOS 内核的配置
头文件来裁剪 FreeRTOS 的功能,所以我们把它拷贝一份放在 user 这个文件夹下面。
打开 FreeRTOSv9.0.0 源码,在“ FreeRTOSv9.0.0\FreeRTOS\Demo ”文件夹下面找到
CORTEX_STM32F103_Keil ” 这 个 文 件 夹 , 双 击 打 开 , 在 其 根 目 录 下 找 到 这 个
FreeRTOSConfig.h ”文件,然后拷贝到我们工程的 user 文件夹下即可,等下我们需要对
这个文件进行修改。 user 文件夹,见名知义我们就可以知道里面存放的文件都是用户自己
编写的

添加FreeRTOS源码到工程组文件夹

1.新建FreeRTOS/scr和FreeRTOS/port分组,然后将文件添加到工程中

2.添加FreeRTOS头文件的路径

3.根据自己的开发板修改FreeRTOSConfig.h文件,还有一些对其中宏定义的修改按照自己的需求进行即可,这里不再截图

4.修改stm32f1xx_it.c

 SysTick中断服务函数是一个非常重要的函数,FreeRTOS所有和时间相关的事情都在里面处理,需要一个FreeRTOS的心跳时钟,FreeRTOS帮我们实现了Systick的启动配置:在port.c文件中实现了vPortSetupTimerInterrupt()函数,所以移植时只需要我们现在stm32f1xx_it.c中实现我么对应平台的Systick_Handler()函数即可。FreeRTOS 为开发者考虑得特别多,PendSV_Handler()SVC_Handler()这两个很重要的函 数都帮我们实现了,在 port.c 文件中已经实现 xPortPendSVHandler()vPortSVCHandler() 函数,防止我们自己实现不了,那么在 stm32f10x_it.c 中就需要我们注释掉 PendSV_Handler()SVC_Handler()这两个函数了

 

 

 

 这样FreeRTOS就移植好啦  下面还需要创建执行任务才会有实验现象哦~

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值