欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

FreeRTOS在STM32F407上从头开始移植

程序员文章站 2024-02-22 18:40:04
...

到https://www.freertos.org/下载FreeRTOS源码。

1. 在裸机工程中新建ReeRTOS文件夹

FreeRTOS在STM32F407上从头开始移植

2. 复制源码

FreeRTOS在STM32F407上从头开始移植
portable 是不同单片机移植用的,这里只用到Keil、MemMang、RVDS,可以把其他删除
FreeRTOS在STM32F407上从头开始移植

3. 在keil工程中添加分组

FreeRTOS在STM32F407上从头开始移植
heap_4.c 在MemMang中,port.c 在RVDS\ARM_CM4F(STM32F407有FPU)
FreeRTOS在STM32F407上从头开始移植

4. keil工程中添加头文件路径

FreeRTOS在STM32F407上从头开始移植
编译一下,出错了
FreeRTOS在STM32F407上从头开始移植
从FreeRTOS的Demo中复制相应的文件到工程的FreeRTOS\include下
FreeRTOS在STM32F407上从头开始移植
编译一下,出错了
FreeRTOS在STM32F407上从头开始移植
在FreeRTOSConfig.h中修改

/* Ensure stdint is only used by the compiler, and not the assembler. */
#ifdef __ICCARM__		
	#include <stdint.h>
	extern uint32_t SystemCoreClock;
#endif

#if defined(__ICCARM) || defined(__CC_ARM) || defined(__GNUC__)
	#include <stdint.h>
	extern uint32_t SystemCoreClock;
#endif

这样SystemCoreClock就可以被条件编译到了。
编译一下,出错了
FreeRTOS在STM32F407上从头开始移植
重复编译了,屏蔽掉stm32f4xx_it.c中void SVC_Handler(void)、void PendSV_Handler(void)、void SysTick_Handler(void)。
编译一下,出错了
FreeRTOS在STM32F407上从头开始移植
按下图修改宏定义为0
FreeRTOS在STM32F407上从头开始移植
编译一下,OK了。
FreeRTOS在STM32F407上从头开始移植

4. 设置优先级

以STM32CubeMX中的FreeRTOS生成的代码来分析,优先级配置。自己移植可以参考。
FreeRTOS在STM32F407上从头开始移植
ystem tick time系统滴答定时器,优先级最低,优先级15
TIM1定时器作为HAL超时计时判断用。

不使用STM32CubeMX中的FreeRTOS自动生成,则NVIC如下:
FreeRTOS在STM32F407上从头开始移植

相关标签: # FreeRTOS