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
    评论
您好!要将FreeRTOS移植STM32F407并使用HAL,您可以按照以下步骤进行操作: 1. 首先,下载并安装FreeRTOS的最新版本,并确保您熟悉FreeRTOS的基本概念和用法。 2. 确保您已在STM32CubeMX中配置好了您的STM32F407项目,并生成了HAL的初始化代码。 3. 在CubeMX中,配置您的RTOS堆栈和任务。您可以在"Middleware"选项卡中找到FreeRTOS,并启用它。然后,您可以添加任务,设置堆栈大小和优先级等参数。 4. 生成代码后,将生成的文件导入到您的开发环境中。 5. 在FreeRTOSConfig.h文件中,配置FreeRTOS的选项,例如内核时钟频率、堆大小等。确保这些选项与您的项目需求相符。 6. 打开main.c文件,并在main函数中创建FreeRTOS的任务。您可以使用FreeRTOS提供的API函数来创建和管理任务。例如,使用xTaskCreate函数来创建任务并指定任务函数、任务名称、堆栈大小和优先级等参数。 7. 在任务函数中,您可以编写您的应用程序代码。使用HAL函数来控制STM32F407的外设和执行其他操作。 8. 在main函数的末尾,启动FreeRTOS调度器(vTaskStartScheduler函数),它将开始执行任务并管理任务的调度。 9. 编译并烧录您的代码到STM32F407开发板上。 10. 在运行时,FreeRTOS将根据任务的优先级和调度算法来管理任务的执行。 这是一个简要的概述,供您进行FreeRTOSSTM32F407上使用HAL移植。根据您的具体需求,您可能还需要进行其他配置和调整。希望对您有所帮助!如果您有任何进一步的问题,请随时提问。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值