链接:https://pan.baidu.com/s/1hgyQqoDqDuETEHr_I80M8Q
提取码:e890
另外还需要准备一个简单的工程,这里使用一个空工程来完成移植
已移植好的stm32f407例程下载链接:
https://download.csdn.net/download/mygod2008ok/12315598
开始移植
在工程中新建一个文件夹,并命名为freeRTOS

2.将准备好的freeRTOS库中的源码全部复制

3. 粘贴到工程中的freeRTOS文件夹中,并将portable中的文件仅保留以下4个

4.在工程中创建两个文件组freeRTOS_sourcet和freeRTOS_portable,并加入以下文件到工程,注意port.c选择M4里面的,因为stm32f407是m4系列

5. 另外要添加freeRTOS相关的文件路径到工程中

6.先编译一下,出现如下错误

7.少了FreeRTOSConfig.h文件,可以去下载一个,也可以到freeRTOS提供的Demo中复制一份过来,这里从DEMO中寻找,没有stm32f407 demo,用stm32f103中的代替

8.找到FreeRTOSConfig.h文件复制

9.粘贴到工程中的FreeRTOS中的include文件夹内

10.再次编译一下工程,会出现以下错误

11.按住CTRL+F键,输入xTaskGetCurrentTaskHandle后进行全局搜索

12.搜索结果如下

13.在FreeRTOSConfig.h中加入如下宏后再次编译一下
#define INCLUDE_xTaskGetCurrentTaskHandle 1
14.对port.c中的三个函数进行适配,也就是让启动文件分别能够指向这三个函数



15.再次编译一下,会出现以下错误
16.将stm32f10x_it.c中的SVC_Handler,PendSV_Handler,SysTick_Handler三个函数屏蔽掉,重新编译一下工程

17.在main文件中加入头文件task.h,然后编译一下,出现如下错误
18.双击跳转到出错处,并加入FreeRTOS.h头文件再次编译一下,编译通过

19.创建任务
//开始任务任务函数
void start_task(void *pvParameters)
{
taskENTER_CRITICAL(); //进入临界区
// 创建其它任务
vTaskDelete(NULL); //删除开始任务
taskEXIT_CRITICAL(); //退出临界区
}
20.main中启动调度器
int main(void)
{
xTaskCreate((TaskFunction_t )start_task, //任务函数
(const char* )"start_task", //任务名称
(uint16_t )128, //任务堆栈大小
(void* )NULL, //传递给任务函数的参数
(UBaseType_t )3, //任务优先级
(TaskHandle_t* )0); //任务句柄
vTaskStartScheduler();
/* Infinite loop */
for (;;)
{
}
}
-
Fatfs移植
-
准备好flash spi驱动,这里以w25qxx系列flash为例来挂载fatfs文件系统

2.准备好fatfs文件,这里使用fatfs_014版本文件系统,下载链接如下
链接:https://pan.baidu.com/s/1l6gcODXHpMhx4AIwA1xSsg
提取码:zvsr
3.添加文件到工程

4.添加路径到C++路径选项中

5.在ffconf.h中配置如下
#define FF_USE_MKFS 1
#define FF_USE_LABEL 1
#define FF_CODE_PAGE 437
#define FF_USE_LFN 2
#define FF_LFN_UNICODE 2
#define FF_STRF_ENCODE 3
#define FF_VOLUMES 1
#define FF_FS_REENTRANT 1
#define FF_FS_TIMEOUT 1000
#define FF_SYNC_t SemaphoreHandle_t
6.在ffconf.h中加入头文件
#include "semphr.h"
7.在ffsystem.c中加入头文件
#include "queue.h"
8.以下函数中使用freeRTOS中的信号量
int ff_cre_syncobj ( /* 1:Function succeeded, 0:Could not create the sync object */
BYTE vol, /* Corresponding volume

本文详细介绍了FreeRTOS实时操作系统及LittlevGL图形库在STM32F407平台上的移植过程,包括源码准备、配置修改、任务创建、文件系统适配等关键步骤。



最低0.47元/天 解锁文章
1万+





