FreeRTOS 手把手移植
建议直接从ST官网上下载开发包,然后根据需要将旧版本FreeRTOS 进行升级。这样的话,基本上就是直接替换。非常高效省时。
Freertos官网:http://www.freertos.org/
Freertos官网右边栏,点击下载,即为最新版。
下载双击exe,解压后下图中 就是源码了,
在源码文件夹中“..\FreeRTOSv9.0.0\FreeRTOS\Demo\CORTEX_STM32F103_Keil”这个路径下,找到文件“FreeRTOSConfig.h”,拷贝到工程文件夹“FreeRTOS”中,或直接对比修改替换旧版本的。
使用的是FreeRTOS这个文件夹下的文件。
在源码文件夹中“..\FreeRTOSv9.0.0\FreeRTOS\Demo\CORTEX_M4F_M0_LPC43xx_Keil\M4”这个路径下,找到文件“FreeRTOSConfig.h”,拷贝到工程文件夹“FreeRTOS”中,
针对cortex-M4的, 上面的FreeRTOSConfig.h是针对M3架构,而我们的芯片是M4架构,使用M3配置也是行的。
“port.c”文件路径..\FreeRTOS\Source\portable\RVDS\ARM_CM3
“heap_2.c”文件路径..\FreeRTOS\Source\portable\MemMang
“list.c”、“queue.c”、“tasks.c”文件路径..\FreeRTOS\Source
全部整理到同一个目录下,这样include头文件时容易配置,不会报错
备注:
\FreeRTOSv9.0.0\FreeRTOS\Source\portable\RVDS\ARM_CM4F目录,是针对Cortex-M4 FPU功能的。
\FreeRTOSv9.0.0\FreeRTOS\Source\portable\RVDS\ARM_CM4_MPU目录,是针对Cortex-M4 MPU功能的。
工程,添加文件
添加头文件路径,由于都整合到一起,包含一个include即可
注意事项,下面说明的主要是针对完全裸代码移植需要操作的步骤。
修改相关文件及参数
将FreeRTOSConfig.h的头文件#include "LPC43xx.h",替换为#include "stm32f4xx.h"
将stm32f4xx_it.c文件内的三个函数注释掉,FreeRTOS本身已经定义过。
下面三个函数也就不用屏蔽了。
void SVC_Handler(void)
{
}
void PendSV_Handler(void)
{
}
void SysTick_Handler(void)
{
}
修改FreeRTOSConfig.h里的相关功能开关
configUSE_IDLE_HOOK、configUSE_TICK_HOOK、configCHECK_FOR_STACK_OVERFLOW、configUSE_MALLOC_FAILED_HOOK 四个宏定义都设置为0,如有需要,自行定义函数并开启
修改freertos的cpu时钟
#define configCPU_CLOCK_HZ (168000000UL )