初级会员

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