|

楼主 |
发表于 2014-12-2 11:58:14
|
显示全部楼层
回 eric2013 的帖子
可否麻烦你在自己的平台上试试看,会不会有我这种现象
代码流程:初始化LCD及外部SRAM->初始化GUI->载入字库字体->开缓存->写字符->刷新缓存
代码依次按照上面顺序排列:
LCD及Sram初始化- /*
- 功能:LCD底层驱动初始化(外部调用)
- */
- void LCD_Button_Init(void)
- {
- LCD_GPIO_Configuration();
- TIM3_PWM_MODE_Configuration();
- LCD_FSMC_Configuration();
- LCD_Configuration();
- SRAM_Init();
- }
复制代码 初始化GUI- void GUI_X_Config(void) {
- #if USE_EXSRAM
- GUI_ALLOC_AssignMemory((u32 *)Bank1_SRAM2_Addr, 400*1024);
- #else
- //
- // 32 bit aligned memory area
- //
- static U32 aMemory[GUI_NUMBYTES / 4];
- //
- // Assign memory to emWin
- //
- GUI_ALLOC_AssignMemory(aMemory, GUI_NUMBYTES);
- #endif
- //
- // Set default font
- //
- GUI_SetDefaultFont(GUI_FONT_8X16);
- }
复制代码 载入字库:- /* GUI_FONT structure in RAM */
- static GUI_FONT xbf16_16Font;
- /* GUI_XBF_DATA structure in RAM */
- static GUI_XBF_DATA XBF16_16Data;
- //16_16字库地址
- static const uint32_t TTF16_16Addr=EXROM_ADDR_16_16_TTF;
- /*
- 功能:从字库中获取字体
- */
- static int _cbGetData(U32 Off, U16 NumBytes, void * pVoid, void * pBuffer)
- {
- uint32_t u32_StartAddr=*((uint32_t *)pVoid);
-
- SPI_BufferRead(pBuffer,u32_StartAddr + Off,NumBytes);
-
- // for(uint16_t i=0;i<NumBytes;i++)
- // printf("Read data=%#x\\r\\n",(uint8_t)pBuffer[i]);
- return (0);
- }
- /*
- 功能:创建字库结构
- */
- static void CreateXBF_Font(void)
- {
- const uint32_t *TtfAddr=&TTF16_16Addr;
- //创建16_16
- GUI_XBF_CreateFont(&xbf16_16Font, /* Pointer to GUI_FONT structure */
- &XBF16_16Data, /* Pointer to GUI_XBF_DATA structure */
- GUI_XBF_TYPE_PROP_AA4_EXT, /* Font type to be created */
- _cbGetData, /* Pointer to callback function */
- (void *)TtfAddr); /* Pointer to be passed to callback */
- }
- /*
- 功能:在系统中载入中文字库
- */
- void LoadTTF(void)
- {
- CreateXBF_Font();
- GUI_UC_SetEncodeUTF8();
- }
- /*
- 功能:设置为外置16*16汉字库
- */
- void SetXbfFont16_16(void)
- {
- GUI_SetFont(&xbf16_16Font);
- }
复制代码 主函数运行:- //初始化LCD
- LCD_Button_Init();
- //初始化GUI
- GUI_Init();
- //载入自定义字库
- LoadTTF();
- //分配绘图缓存
- RefLCD=GUI_MEMDEV_CreateEx(0,0,480,320,GUI_MEMDEV_NOTRANS);
- GUI_MEMDEV_Select(RefLCD);
- GUI_SetColor(GUI_RED);
- GUI_SetBkColor(GUI_WHITE);
- GUI_DrawLine(0,0,31,0);
- SetXbfFont16_16();
-
- GUI_DispStringAt("ABCD",0,1);
- GUI_MEMDEV_CopyToLCD(RefLCD);
- while(1);
复制代码 |
|