生活随笔
收集整理的這篇文章主要介紹了
STEMWIN开发记录指南—-从外部flash显示图片
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
最近想使用emwin用于stm32的GUI界面開發、現在記錄一些遇到的問題,以及一些解決、未解決的方法。
不定期更新匯總。
目前開發平臺正點原子的STM32F103ZET6,野火的STM32F429
前景描述:想將圖片存儲在外部存儲器,使用板載spi flash。使用Image2LCD將bmp圖片轉化成bin,然后通過SD更新到flash中
問題一:
在從外部調用該圖片用于顯示的過程中,發現一個有趣的事情。
一般emwin顯示bmp圖片是使用emwin自帶工具BmpCvtST.exe生成.C或者流位圖(dta)。生成C數組一般類似這樣:
extern GUI_CONST_STORAGE GUI_BITMAP bmniao100
;static GUI_CONST_STORAGE
unsigned short _acniao100
[] = {...};GUI_CONST_STORAGE GUI_BITMAP bmniao100
100, 100, 200, 16, (unsigned char *)_acniao100
, NULL, GUI_DRAW_BMP565
};然后加載到工程里面,用
GUI_DrawBitmap(&bmniao100
, 0, 0);調用即可正常顯示。
這種方法加載圖片很快,但是遇到圖片多的GUI,單片機RAM不夠,根本扛不住,只能放在外部存儲器。
我在從外部flash調用bin顯示的時候發現。
用于F103:
有意思的來了:
使用emwin自帶 GUI_ALLOC申請動態內存
hMem
= GUI_ALLOC_AllocZero(size
);
_acBuffer
= GUI_ALLOC_h2p(hMem
);
bindBmpFileData_flash(_acBuffer
, (uint8_t
*)pName
);
bitmap
.pData
= _acBuffer
;
GUI_DrawBitmap(&bitmap
,0,0);
GUI_ALLOC_Free(hMem
);
顯示結果如下:
看到沒有,有重影!!!
如果使用正點原子的mymalloc函數:
_acBuffer
= mymalloc(SRAMEX
,size
);
bindBmpFileData_flash_02(_acBuffer
, (uint8_t
*)pName
);
bitmap
.pData
= _acBuffer
;
GUI_DrawBitmap(&bitmap
,0,0);
myfree(SRAMEX
,_acBuffer
);
顯示如下:
顯示正常。
有點意思。
移植到野火的F429上面,使用GUI自帶的 GUI_ALLOC_ 我測試是正常的。
我覺得的問題點是在哪,是在GUIConf.c內存分配方面。原子的內存分配使用如下:
void GUI_X_Config(void) {if(USE_EXRAM
) {U32
*aMemory
= mymalloc(SRAMEX
,GUI_NUMBYTES
); GUI_ALLOC_AssignMemory((void*)aMemory
, GUI_NUMBYTES
); GUI_ALLOC_SetAvBlockSize(GUI_BLOCKSIZE
); GUI_SetDefaultFont(GUI_FONT_6X8
); }else {U32
*aMemory
= mymalloc(SRAMIN
,GUI_NUMBYTES
); GUI_ALLOC_AssignMemory((U32
*)aMemory
, GUI_NUMBYTES
); GUI_ALLOC_SetAvBlockSize(GUI_BLOCKSIZE
); GUI_SetDefaultFont(GUI_FONT_6X8
); }
}
使用mymalloc內存管理。
而野火的內存分配
void GUI_X_Config(void)
{
#ifdef USE_EXTMEMHEAPGUI_ALLOC_AssignMemory(HeapMem
, GUI_NUMBYTES
);#else GUI_ALLOC_AssignMemory(extMem
, GUI_NUMBYTES
); #endif
}
沒用內存管理,直接映射到SDRAM.。
當然,如果配合WM窗口等控件顯示時,則不會有重影現象,如果單獨顯示,還是用的正點原子模板,就要注意一下。
問題二:關于bmp轉bin文件格式問題。
使用LSB低位在前,對于emwin,顯示是正常的
如果使用MSB格式:
這個需要注意。
總結
以上是生活随笔為你收集整理的STEMWIN开发记录指南—-从外部flash显示图片的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。