初级会员 
  
	- 积分
 - 199
 
        - 金钱
 - 199 
 
       - 注册时间
 - 2017-12-12
 
      - 在线时间
 - 61 小时
 
 
 
 | 
 
折腾了几天,参考论坛代码一直显示一个点,或者乱码,不知道怎么回事,有试着把位图 流信息度出来调用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); //直接读取位图流信息显示正常 
} 
 
 
 |   
 
 
 
 |