|
楼主 |
发表于 2017-3-8 09:57:04
|
显示全部楼层
我用了GUI_DrawStreamedBitmapExAuto(_GetDataEx,(void *)&BitBMPBinary,0,0);
还加了GUI_BMP_GetXSizeEx(_GetDataEx, (void *)&BitBMPBinary);
GUI_BMP_GetYSizeEx(_GetDataEx, (void *)&BitBMPBinary);
执行第一次,NumBytesReq = 0x1A, off = 0x00
执行第二次,NumBytesReq = 0x1A, off = 0x00
执行第三次,NumBytesReq = 0x10, off = 0x00
执行第四次,NumBytesReq = 0x25800, off = 0x10 这个整个文件的长度
我每次只读一个sector=4096B, 然后它就不来第5次了
#include "main.h"
#include "w25qxx.h"
#define SPIFLASHSECTOR 4096
typedef struct{//óû§¶¨òåò»¸ö½á11ì壬óÃóúspiflashóÃÕa¸ö×îoÃ
u32 rBMPAddressofSFlash; //í¼Æ¬ÔúSpiFlashÖDμľø¶ÔμØÖ·
u32 rSizeofBMP; //×üμÄλá÷í¼êy¾Y′óD¡
u32 rRemainSizeBMP; //ê£ÏÂμÄ×Ö½úêy
}TypeofBitBMP;
TypeofBitBMP BitBMPBinary;
u8 BmpBuf[SPIFLASHSECTOR]; //èç1ûêÇÎļtÏμí3ê±£¬é趨ò»DD¡£èç1ûêÇSpiFlash,é趨Îaò»¸öSector
static int _GetDataEx(void * p, const U8 ** ppData, unsigned NumBytesReq, U32 Off){
if(NumBytesReq > SPIFLASHSECTOR)
NumBytesReq = SPIFLASHSECTOR; //èç1ûÇëÇóêy¾Yêyá¿′óóú4096
// BitBMPBinary = *((TypeofBitBMP *)p);
W25QXX_Read(BmpBuf,(Off + QSPI_DTA_ADDR + BorderBK_off),NumBytesReq);
*ppData = BmpBuf; //·μ»Ø¶á3öà′μÄêy¾Y
// BitBMPBinary.rRemainSizeBMP -= NumBytesReq;
if(BitBMPBinary.rRemainSizeBMP > NumBytesReq){
BitBMPBinary.rRemainSizeBMP -= NumBytesReq;
return NumBytesReq; //Îò¶ááËò»¸ösectorμÄêy¾Y¸øÄ㣬BmpBufàïêy¾Y¶¼¿éóÃ
}else{
return BitBMPBinary.rRemainSizeBMP; //BmpBufàïÖ»óDê£ÏÂÕaμã¿éóÃ
}
}
static void _cbBkWindow(WM_MESSAGE* pMsg){
switch (pMsg->MsgId){
case WM_PAINT:
GUI_SetBkColor(GUI_RED);
GUI_SetColor(GUI_WHITE);
BitBMPBinary.rBMPAddressofSFlash = QSPI_DTA_ADDR + BorderBK_off;
BitBMPBinary.rSizeofBMP = BorderBK_len;
BitBMPBinary.rRemainSizeBMP = BorderBK_len;
//GUI_BMP_DrawEx(_GetDataEx,(void *)&BitBMPBinary,0,0);
GUI_BMP_GetXSizeEx(_GetDataEx, (void *)&BitBMPBinary);
GUI_BMP_GetYSizeEx(_GetDataEx, (void *)&BitBMPBinary);
GUI_DrawStreamedBitmapExAuto(_GetDataEx,(void *)&BitBMPBinary,0,0);
// GUI_DrawStreamedBitmapAuto((void *)&BitBMPBinary,0,0);
break;
default:
WM_DefaultProc(pMsg);
break;
}
}
void MainTask(void){
UpdateFontETC();
GUI_Init();
WM_SetCreateFlags(WM_CF_MEMDEV); //ê1Äü′°¿úê1óÃÄú′æé豸
PROGBAR_SetDefaultSkin(PROGBAR_SKIN_FLEX);
FRAMEWIN_SetDefaultSkin(FRAMEWIN_SKIN_FLEX);
PROGBAR_SetDefaultSkin(PROGBAR_SKIN_FLEX);
BUTTON_SetDefaultSkin(BUTTON_SKIN_FLEX);
CHECKBOX_SetDefaultSkin(CHECKBOX_SKIN_FLEX);
DROPDOWN_SetDefaultSkin(DROPDOWN_SKIN_FLEX);
SCROLLBAR_SetDefaultSkin(SCROLLBAR_SKIN_FLEX);
SLIDER_SetDefaultSkin(SLIDER_SKIN_FLEX);
HEADER_SetDefaultSkin(HEADER_SKIN_FLEX);
RADIO_SetDefaultSkin(RADIO_SKIN_FLEX); //ê1Äü¿Ø¼tƤ·ô
WM_SetCallback(WM_HBKWIN, &_cbBkWindow); //éèÖÃ×àÃæ′°¿úμÄ»Øμ÷oˉêy
// User_CreateFrame(&_cbLanguage);
while(1){
GUI_Delay(100);
}
}
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ |
|