TouchGFX(二)_STM32CubeIDE烧写资源到外部Flsah

码字不容易,转载请注明出处!


在实际工程开发中,画面丰富的ui,通常一个界面就需要用到很多图片,刚开始使用一张两张图片的时候或许可以放在mcu的内部flash,但是图片多了,放在内部flash的做法就不现实了,下面将介绍如何解决这个问题,方法有很多,只有最适合自己的,没有说指定哪一个是最好。

TouchGFX(二)_STM32CubeIDE烧写资源到外部Flsah_第1张图片

首先从图片资源说起,现在用手机拍一张图片,大小就有好几M,如果这张图片分辨率适合自己的屏幕的话,当然可以直接导入到TouchGFX里面使用,但是这一张图片就占了巨大的空间,还得另外扩充外部的FLASH,这是非常不划算的,所以我们可以稍微牺牲一点图片质量,把图片处理一下。
TouchGFX(二)_STM32CubeIDE烧写资源到外部Flsah_第2张图片
打开百度搜索美图,点击进去打开网页版,打开一张本地图片(该图片来源一加手机7pro相册),然后可以根据自己屏幕需要调整分辨率,保持宽高比例可以避免图像变形,修改后点击保存与分享,选择PNG格式,点击保存图片,保存到本地
TouchGFX(二)_STM32CubeIDE烧写资源到外部Flsah_第3张图片
TouchGFX(二)_STM32CubeIDE烧写资源到外部Flsah_第4张图片
TouchGFX(二)_STM32CubeIDE烧写资源到外部Flsah_第5张图片
TouchGFX(二)_STM32CubeIDE烧写资源到外部Flsah_第6张图片
TouchGFX(二)_STM32CubeIDE烧写资源到外部Flsah_第7张图片
可以跟原图对比,原图是1.4M,调整后的是970K(没有修改分辨率)
TouchGFX(二)_STM32CubeIDE烧写资源到外部Flsah_第8张图片
接下来解决超出FLASH大小的问题
打开工程根目录下的链接文件(.ld),在MEMORY里面加入以下内容,然后拉到ld文件底部,按照下面图片添加定义,其中ExtFlashSection可以根据自己需要定义名称。ExtFlashSection里面包含的内容:第一行是图片的外部定义;第二行是字体的外部定义。整个的意思就是把代码中带有这个外部定义的变量放到SDRAM地址区域中,这个名称要跟第一张图片对应,可以根据自己需要改为QSPIFLASH,或者SPIFLASH
TouchGFX(二)_STM32CubeIDE烧写资源到外部Flsah_第9张图片
TouchGFX(二)_STM32CubeIDE烧写资源到外部Flsah_第10张图片
然后就可以编译通过,不会报错
TouchGFX(二)_STM32CubeIDE烧写资源到外部Flsah_第11张图片
点击小虫子进行烧写和仿真,这里有可能会报错,以为没有刚刚定义的区域的烧写算法
TouchGFX(二)_STM32CubeIDE烧写资源到外部Flsah_第12张图片
点击小虫子右边的箭头,选择调试配置,打开后按下图操作,在调试器选项中拉到底,勾选External Loader,点击Scan扫描烧写算法,然后就可以在列表中选择自己需要的算法,这个是官方的烧写算法,如果没有找到适合自己的,那么可能要自己编写,我这里也没有适合我的,我是直接烧录到SDRAM,所以直接选择一个地址跟我一样的,先烧进去,如果用的是QSPIFLASH和SPIFLASH,一样是在这个列表里面选择,选定后点击应用,然后关闭或立即调试
TouchGFX(二)_STM32CubeIDE烧写资源到外部Flsah_第13张图片
经过以上操作,就可以解决烧录到外部FLASH或者SDRAM的问题。
如果按照我的解决方法,那么就会产生新的问题,**板子断电重启后就没有画面了!**下一篇文章将介绍如何解决这个问题,点击关注和在看,可以第一时间收到推送哦!

码字不容易,转载请注明出处!

你可能感兴趣的:(TouchGFX(二)_STM32CubeIDE烧写资源到外部Flsah)