logo资料库

STM32 FreeRTOS + FATFS + EMWIN移植及测试.pdf

第1页 / 共9页
第2页 / 共9页
第3页 / 共9页
第4页 / 共9页
第5页 / 共9页
第6页 / 共9页
第7页 / 共9页
第8页 / 共9页
资料共9页,剩余部分请下载后查看
FreeRTOS + Fatfs + Emwin 的移植及使用 一、FreeRTOS 移植 1、获取源代码 进入官网 http://www.freertos.org/ 下载源码,下图 1-1 是从官网下载到的源码目 录结构截图 2、建立工程所需的 FreeRTOS 源码目录 ⑴ 如图 1-2 是在图 1-1 中打开 FreeRTOS 目录的截图 图 1-1 ⑵ 将图 1-2 中 Source 目录下的所有文件复制到工程源码目录下如图 1-3 所示 图 1-2 ⑶ 打开图 1-3 中的 portable 目录,如下图 1-4 所示 图 1-3 图 1-4 ⑷ 根据处理器类型和编译环境保留 Common 和 MemMang 目录,以及相应目录下 的源码,对于其他不需要的进行删除,如图 1-5 所示为删除之后的 portable 目录下的截 图 3、建立工程,本工程在 IAR 8.11.1 环境下建立 图 1-5 ⑴ 如图 1-6 所示,在工程的跟路径下建立组 FREE-RTOS,并在组 FREE-RTOS 下建立 组 Inc 和 Src
⑵ 在工程中添加程序文件,如图 1-7 所示,将所有的.h 文件加入到组 Inc 下,将所 有的.c 文件加入到 Src 下 图 1-6 ⑶ 对 FreeRTOS 进行裁剪,在本工程中裁剪掉了 Croutine 和 mpu_wrapper 功能, 图 1-7 如上图 1-7 所示将灰色程序文件的不加入到编译即可 4、配置及测试 FreeRTOS ⑴ 如 下 图 1-8 所 示 , 实 现 Systick 中 断 函 数 功 能 , 调 用 函 数 HAL_IncTick 和 xPortSysTickHandler ⑵ 如图 1-9 和图 1-10 所示,通过修改 FreeRTOSConfig.h 文件中的相关宏可对内核 图 1-8 进行配置
图 1-9 ⑶ 在 main 函数中创建两个测试任务,并调用函数 vTaskStartScheduler 启动调度器 图 1-10 进行测试。
二、Fatfs 移植 1、获取源代码 进入官网 http://elm-chan.org/fsw/ff/00index_e.html 下载源码,如下图 2-1 是从官 网下载的源码目录结构截图 图 2-1 2、建立工程所需的 FATFS 源码目录 ⑴ 如图 2-2 是在图 2-1 中打开 source 目录的截图,所有的程序源文件都存放在该 目录下 ⑵ 将图 2-1 中的所有文件都拷贝到工程源码目录下 3、将 FATFS 加入到工程中 图 2-2 ⑴ 如下图 2-3 所示,在工程的根路径下建立组 FATFS,以及在 FATFS 组目录下建立 组 Inc 和组 Src ⑵ 在工程中添加程序文件,如图 2-4 所示,将所有的.h 文件加入到组 Inc 下,将所 有的.c 文件加入到 Src 下 图 2-3 ⑶ 如图 2-5 所示,在 FATFS 组下添加 disoio_ext.c 文件,用于实现 FATFS 的磁盘接 图 2-4 口函数 图 2-5
4、配置及测试 FATFS ⑴ 如下图 2-6 所示,在 diskio_ext.h 中定义 diskio 接口函数结构,并在 diskio_ext.c 文件中实现相应磁盘的驱动函数 ⑵ 如下图 2-7 所示,在 diskio.c 文件中实现 U 盘和 Flash 的磁盘接口函数类 图 2-6 ⑶ 如下图 2-8 所示,在相应的接口函数中调用步骤⑵中所定义的磁盘接口函数类 图 2-7 ⑷ 在程序文件 ffconf.h 中对相关宏定义进行设置即可完成 FATFS 的配置 图 2-8
三、Emwin 移植 1、获取源代码 由于 Emwin 不是开源免费软件,在本工程中采用的是 stEmwin,在 st 官网上搜索 stemwin 即可下载,下图 3-1 为下载的源码目录结构截图 2、建立工程所需的 EMWIN 源码目录 ⑴ 在工程的源码目录下建立如下图 3-2 所示的目录 图 3-1 ⑵ 如下图 3-3 所示为打开图 3-1 中的 Libraies 目录后的截图 图 3-2 ⑶ 如下图 3-4 所示为打开图 3-3 中的 STemwinLibrary532 目录后的截图 图 3-3 图 3-4 ⑷ 将图 3-4 中 Config、inc、OS 目录下的所有文件拷贝到工程中的 EMWIN 源码目录下 的对应的 Config、inc、OS 目录下 ⑸ 根据处理器信号、编译环境、是否运行实时操作系统选择图 3-4 中的 Lib 目录下的 对应文件拷贝到工程中的 EMWIN 源码目录下的对应 Lib 目录下,打开图 3-4 中的 Lib 目录后 的截图如下图所示 3、将 EMWIN 加入到工程中 ⑴ 如下图 3-6 所示,在工程的根路径下建立组 EMWIN,以及在 EMWIN 组目录下建立 图 3-5
与 EMWIN 源码文件中所对应的目录的组 ⑵ 如下图 3-7 所示,将 EMWIN 源码文件中所有文件分别的添加到工程中的对应的组中 图 3-6 ⑶ 如上图 3-7 所示,其中 Font 组下是用于为系统提供外部字体。如下图所示,本工程 中支持从外部 Flash 读取字体和将字体固化到 ROM 中的方法提供 12*12 和 16*16 的中文字体 的功能 图 3-7 图 3-8 4、加入外部字库 ⑴ 方法一: 字库文件存放在外部 Flash 中,从文件系统读取字库文件中的字库数据, 本方案不适用于串行 Flash,因为会导致窗口更新速度慢。因此,建议硬件使用并行 Flash 来实现。具体步骤如下: 第一步:如下图 3-9 所示,实现读取.xbf 文件数据的函数,本函数会根据 fontType 来读 取相应的字库文件中的字模数据 第二步:如下图 3-10 所示,调用上图 3-9 中的函数来实现读取不同字体数据的函数 图 3-9
第三步:如下图 3-11 所示,调用函数 GUI_XBF_CreateFont 创建相应的字体 图 3-10 第四步:如下图 3-12 所示,使用软件 fontCvST 创建相应的.xbf 字库文件,点击第四张 截图中菜单栏中的 File 下的 Save as 为.xbf 格式 图 3-11 图 3-12 第五步:将生成的.xbf 文件导入程序中所定义的文件系统中的相应路径下 ⑵ 方法二: 本方法是将字库以.c 文件的形式固化到 MCU 的 ROM 中。但是考虑到字库的 大小,因此,只能将部分字的字模数据加入到.c 文件中。具体步骤如下: 第一步:如图 3-12 所示,使用软件 fontCvST 来生成相应的.c 文件,点击第四张截图 中菜单栏中的 File 下的 Save as 为.c 格式 第二步:如图 3-13 所示,复制.c 文件最下方的字体结构定义到工程中相应字体的.c 文件中 第三步:如下图 3-14 所示,在相应的存储字符信息的结构体数组中添加我们工程中所 图 3-13 需的字符的数据 图 3-14
分享到:
收藏