STM32F407霸天虎FreeRTOS学习笔记——移植FreeRTOS到开发板上
FreeRTOS源码获取
在移植之前,首先要获取到 FreeRTOS 的官方的源码包。这里提供两个下载
链 接 , 一 个 是 官 网 : http://www.freertos.org/ , 另 外 一 个 是 代 码 托 管 网 站 :
https://sourceforge.net/projects/freertos/files/FreeRTOS/。打开网站链接之后,我们选择 FreeRTOS 的最新版本 V9.0.0(2016 年),尽管现在 FreeRTOS 的版本已经更新到 V10.0.1 了,但还是选择V9.0.0,因为内核很稳定,并且网上资料很多,因为 V10.0.0 版本之后是亚马逊收购了 FreeRTOS 之后才出来的版本,主要添加了一些云端组件,而且是需要付费使用,所以这里不考虑V10.0.0版本。
移植第一步:创建文件夹
将下载到的FreeRTOS源码解压,然后创建一个新文件夹,将可用的裸机工程复制到该文件夹下
在该文件夹目录下创建一个FreeRTOS文件夹,FreeRTOS文件夹新建内容如下:
-
include文件夹:在FreeRTOS官方源码中路径为 FreeRTOSv9.0.0\FreeRTOSv9.0.0\FreeRTOS\Source\include,将该路径所有文件复制进刚刚创建的include文件夹中。
-
src文件夹:在FreeRTOS官方源码中路径为 FreeRTOSv9.0.0\FreeRTOSv9.0.0\FreeRTOS\Source
-
port文件夹:将FreeRTOS官方源码中 FreeRTOSv9.0.0\FreeRTOSv9.0.0\FreeRTOS\Source\portable\RVDS和FreeRTOSv9.0.0\FreeRTOSv9.0.0\FreeRTOS\Source\portable\MemMang复制过来,RVDS是各种处理器相关的文件夹,MemMang是内存管理文件
Keil
根据以下图红框部分添加工程文件夹及文件,别忘了在魔术棒里的C++的include path里添加头文件的路径
main.c
在main.c里添加以下代码,注意:FreeRTOS.h一定放在task.h面前,不然会报错。
#include "stm32f4xx.h"
#include "bsp_led.h"
#include "FreeRTOS.h"
#include "task.h"
static void BSP_Init(void);
/**
* @brief 主函数
* @param 无
* @retval 无
*/
int main(void)
{
BSP_Init();
}
//硬件初始化
static void BSP_Init(void)
{
//中断优先级分组,分组为4,即4bit都用来表示抢占优先级,范围为:0~15
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4);
//LED初始化
LED_GPIO_Config();
//串口初始化
Debug_USART_Config();
LED1_ON;
printf("usart is ready!\r\n");
}
编译无错后烧录到板子上,看到板上红灯亮了,串口助手打印 usart is ready!,说明移植FreeRTOS到STM32F407成功!