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

版权声明:本文为CSDN博主「丁壳壳蛋」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_43887813/article/details/122611161

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

版权声明:本文为CSDN博主「丁壳壳蛋」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_43887813/article/details/122611161

生成海报
点赞 0

丁壳壳蛋

我还没有学会写个人说明!

暂无评论

相关推荐

FREERTOS学习笔记七-定时器

FREERTOS学习笔记七-定时器 1.实验内容 ​ 本次实验内容是在实验三的基础上增加定时器功能,并在定时器的回调函数中进行串口打印。 2.CubeMX的配置 2.1使能定时器 并配置定时器中断优先级、队列消息长度和深

2022寒假自学蓝桥杯嵌入式

2022寒假自学蓝桥杯嵌入式 欢近似从0开始准备2022年4月份省赛 学习记录分享 2022/1/22晚 硬件部分的认识(国信长天) 液晶屏,芯片在液晶屏下 电源选择跳线 下载调试文件接口