文章目录

  • 1 前言
  • 2 制作FLM烧录算法
  • 2 工程内的改动
    • 2.1 TouchHAL.cpp
    • 2.2 screen1view.cpp
    • 2.3 修改分散加载文件
    • 2.4 杂物间

1 前言

第七次记录一下我在加载外部flash的图片资源的时候,配置的过程和遇到的一些问题。这个记录大概花了四五天才开始做,是因为遇到了太多的BUG,感谢 “开源项目交流学习 ” 的群友们,帮我解决了很多难题。

2 制作FLM烧录算法

想要加载外部图片的资源,首先要把图片烧录到SPIflash里才可以。FLM烧录算法的制作参考kk大佬的博客https://blog.csdn.net/sinat_31039061/article/details/107220994

这里需要注意的是:制作烧录算法的原料推荐使用寄存器版的工程,hal库的工程我尝试了很多次都不可用。如果非要使用hal库制作烧录算法的话,可以看一看stm32公众号的这篇文章。https://mp.weixin.qq.com/s/ZYzXnbQ9oKHg77Gzb9WXmg

2 工程内的改动

2.1 TouchHAL.cpp

模拟器中不会识别sFLASH_ReadBuffer这个函数,为了兼容模拟器和单片机,模拟器默认定义了SIMULATOR 这个宏。同样的建议在本文件包含spiflash的驱动的时候,也加上相关的宏定义。

bool TouchGFXHAL::blockCopy(void* RESTRICT dest, const void* RESTRICT src, uint32_t numBytes)
{#ifndef SIMULATOR /*不使用VS仿真的代码*/ const uint32_t ExflashStart = 0x90000000;const uint32_t EXflashSize = 8*1024*1024;uint32_t datoffset = (uint32_t)src;if((datoffset >= ExflashStart)&&(datoffset < ExflashStart + EXflashSize)){datoffset = datoffset -ExflashStart;sFLASH_ReadBuffer((uint8_t *)dest,datoffset,numBytes);return true;      }elsereturn TouchGFXGeneratedHAL::blockCopy(dest, src, numBytes);
#elsereturn TouchGFXGeneratedHAL::blockCopy(dest, src, numBytes);
#endif
}

2.2 screen1view.cpp

void Screen1View::setupScreen()
{#ifndef SIMULATOR /*不使用VS仿真的代码*/ //注意,图片加载的位置要避开显存。Bitmap::setCache((uint16_t *)0xd0100000,0x00700000,128);//7M内存存放图片,最多放128张图片Bitmap::cacheAll();//全部加载
#endifScreen1ViewBase::setupScreen();
}

2.3 修改分散加载文件

取消勾选,编辑分散加载文件

LR_IROM1 0x08000000 0x00100000  {    ; load region size_regionER_IROM1 0x08000000 0x00100000  {  ; load address = execution address*.o (RESET, +First)*(InRoot$$Sections).ANY (+RO).ANY (+XO)*.o (FontFlashSection)      ;这句省略后,默认还是在内部flash里}RW_IRAM1 0x20000000 0x00030000  {  ; RW data.ANY (+RW +ZI)}RW_IRAM2 0x10000000 0x00010000  {.ANY (+RW +ZI)}
}LR_EROM1 0x90000000 0x00800000  {    ; load region size_regionER_EROM1 0x90000000 0x00800000  {  ; load address = execution address*.o (ExtFlashSection)}
}

2.4 杂物间

LR_EROM1 0x90000000 0x00800000 第一个参数是编译到的存放位置,第二个是编译资源的最大值
LR_EROM1 和 ER_EROM1 区别不详,会的大佬请留下评论。

Q:16进制不好读容量,有没有什么较快的方法?
A:记住0x10000 = 1M,以此为基础,0x8000是512K,0x800000是8M

Q:为什么不把字体放到外部?
A:这方面资料太少,我也不会。官方给的G0的例子我也看了好久,会的大佬请留下评论。

加载速度:3M图片大约两秒加载完成

Q:如何在加载时显示进度?
A:参考砖家铭鹏TouchGFX(五)_上电加载进度条界面

Q:如何利用touchgfx tick event?
A: 参考微雪课堂6.TouchGFX界面应用之定时器机制

有问题请留言,需要源码请访问https://gitee.com/nwwhhh/intelligent-heating-table
——END

STM32F429IGT6项目准备7——使用TouchGFX加载SPIflash内的图片资源相关推荐

  1. 配置项目启动的时候就加载 servlet

    load-on-startup值为0 就是在项目启动的时候自动加载该servlet

  2. java web配置dll文件_JavaWeb项目中dll文件动态加载方法解析(详细步骤)

    相信很多做Java的朋友都有过用Java调用JNI实现调用C或C++方法的经历,那么Java Web中又如何实现DLL/SO文件的动态加载方法呢.今天就给大家带来一篇JAVA Web项目中DLL/SO ...

  3. “在解决方案中的一个或多个项目由于以下原因未能加载 项目文件或网站已移动或重新命名,或者不在您的计算机上” 的解决办法...

    用Visual studio.NET 2003/2005/2008在打开从网上下载的解决方案或从其他地方考来的解决方案时,往往会碰到一个这样的错误,提示说: "在解决方案中的一个或多个项目由 ...

  4. 在Myeclipse中没有部署jeesite项目,但是每次运行其他项目时,还是会加载jeesite项目...

    解决办法: 一.在以下路径中找到jeesite文件,并删除 1.Tomcat 7.0\conf\Catalina\localhost 2.Tomcat 7.0\webapps 3.Tomcat 7.0 ...

  5. 解决eclipse环境下maven项目tomcat启动,未加载到项目的问题

    解决eclipse环境下maven项目tomcat启动,未加载到项目的问题 参考文章: (1)解决eclipse环境下maven项目tomcat启动,未加载到项目的问题 (2)https://www. ...

  6. vue+webpack项目打包后背景图片加载不出来问题解决

    vue+webpack项目打包后背景图片加载不出来问题解决 参考文章: (1)vue+webpack项目打包后背景图片加载不出来问题解决 (2)https://www.cnblogs.com/mica ...

  7. web项目的启动时文件加载顺序

    web项目的启动时文件加载顺序 转自:http://www.cnblogs.com/yw-ah/p/5751509.html 一. 1.启动一个WEB项目,WEB容器会先去读取它的配置文件web.xm ...

  8. vue项目实现路由按需加载(路由懒加载)的3种方式

    vue项目实现路由按需加载(路由懒加载)的3种方式 1.vue异步组件 2.es提案的import() 3.webpack的require,ensur *1.vue异步组件技术 ==== 异步加载 v ...

  9. vue项目结构及启动文件加载过程分析

    vue项目结构及启动文件加载过程分析 一.vue项目结构 1.导入项目 准备好开发工具Visual Studio Code,导入生成的项目案例.我的Vue版本: 2.项目目录及文件说明 2.1.项目主 ...

最新文章

  1. 滴滴自动驾驶部门成立独立公司,CTO张博兼任新公司CEO
  2. [Java基础]反射概述
  3. 遇见王沥川的人生感悟_23岁酱油泡饭默默无闻,31岁逆袭人生,王彦霖有何魅力?...
  4. 军事医学研究院应晓敏组招聘博士后
  5. 蓝桥杯基础练习之杨辉三角
  6. 面试 | #面试面试面试 做#Java 就是要这种不要脸的…
  7. linux mysql多主一从_linux中mysql多主一从热备份
  8. Linux内存管理:ARM64体系结构与编程之cache(1)
  9. 看不到图层怎么办_图层管理工具及相关问题
  10. 静态的顺序表(C语言实现)
  11. 2021-09-1017. 电话号码的字母组合
  12. Teigha 4.0 Net 开发记录
  13. iphone开发每日一练【2011-10-06】
  14. 挂单html模板,修改标签模板(指令打印)
  15. 兰州大学本科毕业论文答辩PPT模板
  16. python通过win32com库播放mp3文件的代码
  17. java switch贯穿_Java Switch语句贯穿问题
  18. allegro中怎样制作和添加logo
  19. 体现SRP(单一职责原则)的两种模式——工厂模式和命令模式
  20. 编写一个USB接口程序,模拟计算机启动过程和关闭过程启动过程中要加载鼠标、键盘、麦克风等USB设备,具体要求如下: (1)定义一个接口USB,包含两个抽象方法turnOn()he turnOff(),

热门文章

  1. Oracle DROPtable以及Truncate table 的简单测试
  2. 基于 Python 的图像分类项目实践入门
  3. 对于html中div标签height属性的个人理解
  4. 如何让height:auto实现transition过渡效果
  5. C编程小问题 —— “missing function-prototype“
  6. 封闭式基金的净值与分红
  7. 博士申请 | 湖南大学张子兴教授课题组招收人工智能方向博士生
  8. 小福利,带你使用scrapy框架爬取苏宁图书海量信息
  9. python wraps函数_python装饰器---@wraps
  10. IIS7.5 FTP站点正确设置及启用用户隔离和绑定主机名(踩坑记)