FreeRTOS学习之在STM32F407上的移植(HAL库版本)

FreeRTOS源码获取

最新版本可以直接去官网下载:https://www.freertos.org/
也可以去代码托管平台下载历史版本:https://sourceforge.net/projects/freertos/files/FreeRTOS/

准备HAL库工程文件

如果自己现在没有可以正常使用的工程可以去下载我的:https://download.csdn.net/download/weixin_43887813/77133211
也可以参考我的文章新建一个:
https://blog.csdn.net/weixin_43887813/article/details/122614397?spm=1001.2014.3001.5501

移植过程

  1. 在HAL库工程文件里新建FreeRTOS文件夹
    在这里插入图片描述
  2. 拷贝FreeRTOS源码,将Source文件夹下的内容全拷走在这里插入图片描述在这里插入图片描述
  3. 打开portable文件夹,删除没用的文件,只留下RVDS、MemMang、Keil这三个文件夹在这里插入图片描述
  4. 从源码中的Demo文件夹找到下图中的文件拷贝到HAL库工程的User文件夹下在这里插入图片描述在这里插入图片描述
  5. 在HAL库工程中添加FreeRTOS源码在这里插入图片描述FreeRTOS_CORE的文件打开FreeRTOS就可看到,port.c是RVDS文件夹下的ARM_CM4F中的,因为STM32F407是Cortex-M4内核并且带FPU。heap_4.c是MemMang文件夹中,里面有五个文件为什么选择第四个感兴趣的可以自己研究
  6. 在工程里添加对应的头文件在这里插入图片描述
  7. 修改FreeRTOSconfig.h文件
/* Ensure stdint is only used by the compiler, and not the assembler. */
#ifdef __ICCARM__		
	#include <stdint.h>
	extern uint32_t SystemCoreClock;
#endif

修改为

/* Ensure stdint is only used by the compiler, and not the assembler. */
#if defined(__ICCARM__)|| defined(__CC_ARM) || defined(__GNUC__)
	#include <stdint.h>
	extern uint32_t SystemCoreClock;
#endif

几个钩子函数的宏先改为0因为我们没定义
在这里插入图片描述

  1. 修改stm32f4xx_it.h文件,主要是删除SVC_Handler、PendSV_Handler、SysTick_Handler这三个函数,因为这三个函数FreeRTOS已经帮我们实现了
  2. 完成之后编译代码在这里插入图片描述成功!!然后创建任务测试一下就好了,我自己实验用的工程也放到这里。
    STM32F407+HAL+FreeRTOS
  • 5
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值