|
|
static void _DrawBitLine16BPP(GUI_DEVICE * pDevice, int x, int y, U16 const * p, int xsize) {
//设置图形光标位置
LCD_Graphic_Cursor_Set(x, y);
//进入内存写入模式
LCD_Write_Command(MRWDP); // 0x04 命令,进入内存读写模式
//连续写入数据
for (int i = 0; i < xsize; i++) {
uint16_t color = p;
LCD_Write_Data(color >> 8); // 再写高字节
LCD_Write_Data(color); // 先写低字节
}
// 4. 等待 FIFO 空
LCD_Check_Mem_WR_FIFO_Empty();
}
这是我的 16BPP优化后的函数,但是我在这段程序里打个断点,程序运行的时候,我点击界面切换,断点根本不起作用,说明程序没有调用这个函数。
/*********************************************************************
*
* _DrawBitmap
*/
static void _DrawBitmap(GUI_DEVICE * pDevice, int x0, int y0,
int xSize, int ySize,
int BitsPerPixel,
int BytesPerLine,
const U8 * pData, int Diff,
const LCD_PIXELINDEX * pTrans) {
int i;
switch (BitsPerPixel) {
case 1:
for (i = 0; i < ySize; i++) {
_DrawBitLine1BPP(pDevice, x0, i + y0, pData, Diff, xSize, pTrans);
pData += BytesPerLine;
}
break;
case 2:
for (i = 0; i < ySize; i++) {
_DrawBitLine2BPP(pDevice, x0, i + y0, pData, Diff, xSize, pTrans);
pData += BytesPerLine;
}
break;
case 4:
for (i = 0; i < ySize; i++) {
_DrawBitLine4BPP(pDevice, x0, i + y0, pData, Diff, xSize, pTrans);
pData += BytesPerLine;
}
break;
case 8:
for (i = 0; i < ySize; i++) {
_DrawBitLine8BPP(pDevice, x0, i + y0, pData, xSize, pTrans);
pData += BytesPerLine;
}
break;
//
// Only required for 16bpp color depth of target. Should be removed otherwise.
//
case 16:
for (i = 0; i < ySize; i++) {
_DrawBitLine16BPP(pDevice, x0, i + y0, (const U16 *)pData, xSize);
pData += BytesPerLine;
}
break;
//
// Only required for 32bpp color depth of target. Should be removed otherwise.
//
case 32:
for (i = 0; i < ySize; i++) {
_DrawBitLine32BPP(pDevice, x0, i + y0, (const U32 *)pData, xSize);
pData += BytesPerLine;
}
break;
}
}
这是我的_DrawBitmap函数,我把断点打在switch这一行,发现传进来的参数为0x00000001,像这种情况是我哪里没有配置吗? |
|