freeRTOS V10.4.1移植到STM32F407标准库 - 环境Keil5

一、准备工作
1).FreeRTOS官网下载最新的FreeRTOS版本
官网地址:https://www.freertos.org/
2).找一个标准库的实例
STM32F4工程模板-库函数版本
这里我们使用了正点原子 @ALIENTEK的STM32F407开发板库函数例程模板。
3).在工程中建立“FreeRTOS_Portable"和“FreeRTOS_Core”两个工程组。
在这里插入图片描述

4).添加FreeRTOS源码
i).添加reeRTOSv10.4.1\FreeRTOSv10.4.1\FreeRTOS\Source目录的.c文件
ii).添加FreeRTOSv10.4.1\FreeRTOS\Source\portable目录下的keil, MemMang,RVDS三个文件夹
iii).按下图添加如下 “.C”工程文件:
在这里插入图片描述
5).添加头文件:
在这里插入图片描述
测试移植是否成功

编译提示…\FreeRTOS\include\FreeRTOS.h(57): error: #5: cannot open source input file “FreeRTOSConfig.h”: No such file or directory
在这里插入图片描述
解决方法:FreeRTOSv10.4.1\FreeRTOS\Demo\CORTEX_M4F_STM32F407ZG-SK下的FreeRTOSConfig.h拷贝到工程中。在编译又将看到如下错误:
在这里插入图片描述
打开FreeRTOSConfig.h可以看到这样一段代码

#ifdef __ICCARM__
    #include <stdint.h>
    extern uint32_t SystemCoreClock;
#endif 

现在需要将其改成如下部分就可以去除这个错误

#if defined (__ICCARM__)||defined(__CC_ARM)||defined(__GNUC__)
    #include <stdint.h>
    extern uint32_t SystemCoreClock;
#endif

新的错误出现:
在这里插入图片描述
提示三个函数有重复定义,其中SysTick_Handler再FreeRTOS中被重新定义成系统心跳处理中断函数,PendSV_Handler,SVC_Handler也被在FreeRTOS中重新定义用于任务切换,所以需要注释掉stm32F4xxx_it.c中的这三个中断函数

又出现如下错误:
在这里插入图片描述
 其中是先关HOOK钩子函数未定义错,在FreeRTOSConfig.h中改为如下:
在这里插入图片描述
测试移植是否成功
在这里插入图片描述
 至此移植完成。具体配置后面再进行学习。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

东西南北有菜鸟_

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

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

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

打赏作者

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

抵扣说明:

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

余额充值