前言
本文是在上一篇文章的基础上继续介绍第二种将Touchgfx的图片文件存到外部Flash的方法。采用的是.FLM下载算法。直接在keil内添加算法然后像普通下载程序那样下载。
提示:以下是本篇文章正文内容,下面案例可供参考
Touchgfx图片资源存储在外部Flash教程(SPI和QSPI方式):方法二
一、准备工作
一、Keil 管方下载连接
https://www2.keil.com/mdk5
二、移植工程模板
同样是直接拷贝正点的寄存器工程模板来修改。
找到自己Keil的安装目录下的Flash下载算法模板所在位置(最好与自己的芯片系列对应以防其他问题),上一篇是采用的Utility所以是找到了Utility下载算法的模板位置,不要搞混淆了。本章只需要Keil即可。
按照以下步骤准备好所需文件
1、准备工程模板
为了节省大家的时间,这里已经给大家移植好了工程模板。
工程模板下载链接:
https://pan.baidu.com/s/1LwXZ0oZ64V2eGo45krQmtA
提取码:6oio
2、准备驱动文件
前提是你准备的驱动文件是已经验证过能够正确操作Flash的。
①将文件添加到工程,修改spi.c、usart.c、w25qxx.c 里面的引脚和时钟匹配你自己的板子对应的引脚
②修改关键参数,匹配你自己的flash容量大小和类型
上图中个别参数采用宏定义如下,如果不是W25Q256记得修改
③设置分散文件
在MDK的Options for Target->Linker设置如下,添加分散文件Target.sct的路径
另外需要注意的是Target.sct文件需要改变一下添加ABSOLUTE关键字,工程代码中一旦有全局变量就必须添加这个关键字,这里注意一下。
④添加驱动函数
为了节省时间,这里没有实现CheckSum和Verify 两个函数。不需要校验只是下载就行了
#include "FlashOS.H" // FlashOS Structures
#include "sys.h"
#include "usart.h"
#include "w25qxx.h"
int Init (unsigned long adr, unsigned long clk, unsigned long fnc) {
SystemInit();
Sys_Clock_Set(360,25,2