FreeRTOS移植到STM32F407

添加FreeRTOS源码

所需的源码路径如下:
FreeRTOSv202107.00
FreeRTOS
Source添加该文件夹下的所有.c文件
include文件夹添加到工程路径
portable
RVDS
ARM_CM4F添加.c以及文件路径
MemMang选择内存管理算法 如heap_4.c
Demo可从中选取对应芯片的FreeRTOSConfig.h文件进行修改
CORTEX_M4F_STM32F407ZG-SK
FreeRTOSConfig.h
或参考正点原子FreeRTOSConfig.h

FreeRTOSConfig.h配置文件修改

  1. 修改条件编译宏
    在这里插入图片描述
/* 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
  1. 关闭钩子函数(HOOK)
#define configUSE_IDLE_HOOK				  0  //1
#define configUSE_TICK_HOOK				  0  //1
#define configCHECK_FOR_STACK_OVERFLOW 	  0 //堆栈溢出检测 vApplicationStackOverflowHook
#define configUSE_MALLOC_FAILED_HOOK	  0
  1. 需要将stm32f407xx .h(其他系列的芯片找对应的文件)中的 _NVIC_PRIO_BIT 4U改为4
    需要将_NVIC_PRIO_BIT  4U改为4

修改SYSTEM文件

直接移植正点原子的FreeRTOS教程对应的SYSTEM文件夹,不过要进行适当修改

修改中断相关文件

STM32在stm32f4xx_it.c和FreeRTOS的port.c提供相同了SVC_Handler()PendSV_Handler()SysTick_Handler,三个中断服务函数。因此需要屏蔽对应的中断服务函数:

  1. 直接在stm32f4xx_it.c中屏蔽对应的函数;
  2. 可在FreeRTOSConfig.h中注释掉对应的宏定义。

程序测试

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值