文章目录[隐藏]
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
移植过程
- 在HAL库工程文件里新建FreeRTOS文件夹
- 拷贝FreeRTOS源码,将Source文件夹下的内容全拷走
- 打开portable文件夹,删除没用的文件,只留下RVDS、MemMang、Keil这三个文件夹
- 从源码中的Demo文件夹找到下图中的文件拷贝到HAL库工程的User文件夹下
- 在HAL库工程中添加FreeRTOS源码FreeRTOS_CORE的文件打开FreeRTOS就可看到,port.c是RVDS文件夹下的ARM_CM4F中的,因为STM32F407是Cortex-M4内核并且带FPU。heap_4.c是MemMang文件夹中,里面有五个文件为什么选择第四个感兴趣的可以自己研究
- 在工程里添加对应的头文件
- 修改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因为我们没定义
- 修改stm32f4xx_it.h文件,主要是删除SVC_Handler、PendSV_Handler、SysTick_Handler这三个函数,因为这三个函数FreeRTOS已经帮我们实现了
- 完成之后编译代码成功!!然后创建任务测试一下就好了,我自己实验用的工程也放到这里。
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
移植过程
- 在HAL库工程文件里新建FreeRTOS文件夹
- 拷贝FreeRTOS源码,将Source文件夹下的内容全拷走
- 打开portable文件夹,删除没用的文件,只留下RVDS、MemMang、Keil这三个文件夹
- 从源码中的Demo文件夹找到下图中的文件拷贝到HAL库工程的User文件夹下
- 在HAL库工程中添加FreeRTOS源码FreeRTOS_CORE的文件打开FreeRTOS就可看到,port.c是RVDS文件夹下的ARM_CM4F中的,因为STM32F407是Cortex-M4内核并且带FPU。heap_4.c是MemMang文件夹中,里面有五个文件为什么选择第四个感兴趣的可以自己研究
- 在工程里添加对应的头文件
- 修改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因为我们没定义
- 修改stm32f4xx_it.h文件,主要是删除SVC_Handler、PendSV_Handler、SysTick_Handler这三个函数,因为这三个函数FreeRTOS已经帮我们实现了
- 完成之后编译代码成功!!然后创建任务测试一下就好了,我自己实验用的工程也放到这里。
STM32F407+HAL+FreeRTOS
版权声明:本文为CSDN博主「丁壳壳蛋」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_43887813/article/details/122611161
暂无评论