STM32F407移植Little vGL系统,freeRTOS系统,FATFS文件系统

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

链接: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移植

  1. 准备好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
评论 6
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

仙剑情缘

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值