OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4672|回复: 2

W25Q×× FLASH读取位图流显示求救

[复制链接]

5

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
192
金钱
192
注册时间
2017-12-12
在线时间
59 小时
发表于 2022-6-5 18:12:13 | 显示全部楼层 |阅读模式
折腾了几天,参考论坛代码一直显示一个点,或者乱码,不知道怎么回事,有试着把位图 流信息度出来调用GUI_DrawStreamedBitmapAuto()显示正常,证明FLASH中的位图流信息是正确的,但如果直接调用 GUI_DrawStreamedBitmapExAuto()就只显示一个,不知道怎么回事,程序做了1S初始化的设置,每次显示的点颜色都不一样;
/*
*********************************************************************************************************
*    函 数 名: _ShowBMP1
*    功能说明: 显示BMP图片
*    形    参: sFilename  要读取的文件名
*    返 回 值: 无
*********************************************************************************************************
*/

#define SPIFLASHSECTOR    300
u8 bmpBuffer[SPIFLASHSECTOR];                        //读出一个sector

typedef struct
{
        u32 *fphoto;
    u32 rBMPAddressofSFlash;                //位流图在SpiFlash里的偏移地址
    u32 rSizeofBMP;                                        //位流图片总大小
    u32 rRemainSizeBMP;                                //剩余数据大小
}TypeofBitBMP;
TypeofBitBMP BitBMPBinary;

void BkWindow_init()                                //初始化图片位图流信息
{
         u32 *P=NULL;
     BitBMPBinary.fphoto=P;
     BitBMPBinary.rBMPAddressofSFlash=0;//FLASH中储存的地址为0
         BitBMPBinary.rSizeofBMP=287;
     BitBMPBinary.rRemainSizeBMP=287;
}
/*
*********************************************************************************************************
*    函 数 名: _GetData
*    功能说明: 被函数GUI_BMP_DrawEx调用
*    形    参:p             FIL类型数据
*             NumBytesReq   请求读取的字节数
*             ppData        数据指针
*             Off           如果Off = 1,那么将重新从起始位置读取                 
*    返 回 值: 返回读取的字节数
*********************************************************************************************************
*/
static int _GetDataEx(void * p,  unsigned char ** ppData, unsigned NumBytesReq, U32 Off)
{  
       
    if(NumBytesReq > SPIFLASHSECTOR)NumBytesReq = SPIFLASHSECTOR;                //请求数据过大
       
    if(Off == 1)                         BitBMPBinary.rBMPAddressofSFlash=0;
    else                                         BitBMPBinary.rBMPAddressofSFlash= Off;
       
        SPI_Read_Data(BitBMPBinary.rBMPAddressofSFlash ,bmpBuffer,NumBytesReq);
    *ppData = bmpBuffer;               

        return NumBytesReq;                                                    //返回Buffer数据大小
}

void BkWindow()                                                                                //主函数调用
{       
        u8 StreamBuf[287];
       
         GUI_DrawStreamedBitmapExAuto(_GetDataEx, (void *)&BitBMPBinary,100,30);   //只显示一个点和乱码
       
         SPI_Read_Data(0,StreamBuf,287);                                //读取FLASH 位图流数据
         GUI_DrawStreamedBitmapAuto(StreamBuf, 55, 81); //直接读取位图流信息显示正常
}


正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

2

主题

369

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4241
金钱
4241
注册时间
2020-7-24
在线时间
714 小时
发表于 2022-6-6 10:24:54 | 显示全部楼层
回复 支持 反对

使用道具 举报

2

主题

592

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1458
金钱
1458
注册时间
2019-7-28
在线时间
137 小时
发表于 2022-6-6 14:59:28 | 显示全部楼层
帮顶               
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-2-25 15:38

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表