STM32显示外置FLASH存储的图片,遇到内存不足的显示方法

编程入门 行业动态 更新时间:2024-10-11 09:27:46

STM32显示<a href=https://www.elefans.com/category/jswz/34/1758943.html style=外置FLASH存储的图片,遇到内存不足的显示方法"/>

STM32显示外置FLASH存储的图片,遇到内存不足的显示方法

  本文使用CubeMx新建工程,使用硬件spi驱动W25Q64和LCD屏幕,本文使用的屏幕为1.54寸240x240屏幕。

本文中使用的MCU为STM32F103C8T6

如何把图片存储在外置FALSH并显示参考我之前的文章

=1001.2014.3001.5501

如图,一张240x240的图片大小达到了115200,如果要显示存储在FLASH中的这张图片,首先要定义一个大小为115200的数组。

 STM32F103C8T6 这颗MCU的内存不足以创建这么大的数组,所以通过以下代码实现分块显示。

u8 Read_data[BLOCK_SIZE];  // 图像数据缓冲区#define BLOCK_SIZE 480  // 每块的大小,根据RAM容量和需求调整
#define LCD_WIDTH 240    // LCD屏幕宽度
#define LCD_HEIGHT 240   // LCD屏幕高度
#define FLASH_IMAGE_SIZE 115200  // 图像文件的总大小,根据实际大小设置void DisplayImageChunks(u32 startOffset, u32 endOffset) {u32 y = 0;  // 初始化y坐标u32 scrollStep = 1;  // 初始化y坐标的滚动步长,根据需要调整while (1) {// 设置LCD显示区域LCD_Address_Set(0, y, LCD_WIDTH, LCD_HEIGHT);// 逐步读取并显示当前块W25QXX_Read(Read_data, startOffset, BLOCK_SIZE);  // 从Flash内存读取数据for (u32 i = 0; i < BLOCK_SIZE; i++) {u8 data = Read_data[i];LCD_WR_DATA8(data);}// 更新块的起始位置startOffset += BLOCK_SIZE;// 增加y坐标以滚动显示y += scrollStep;// 如果y坐标越界,重置y坐标if (y >= LCD_HEIGHT) {y = 0;break;}// 在每个块之间添加延时,以稳定滚动显示//HAL_Delay(100);  // 根据需要调整延时时长}}

这里数组的大小定义为了480,scrollStep的值为 数组大小(480)/ 2 /屏幕宽度(240)。注意scrollStep要为整数,数组大小和scrollStep根据实际调整。

 在main函数中调用DisplayImageChunks(),

更多推荐

STM32显示外置FLASH存储的图片,遇到内存不足的显示方法

本文发布于:2024-02-06 16:25:53,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1750470.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:外置   内存不足   方法   图片   FLASH

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!