ucgui 移植的前提是已經具備了LCD驅動函數,已經能夠實現點亮LCD屏幕,並實現畫點以及獲取指定點顏色值的功能。一般的顯示屏供應商會提供對應的驅動函數。主要有初始化函數void LCD_Init(),屏幕畫點函數 Void LCD_DrawPoint(u16 x,u16 y,u16 color),以及獲取指定點顏色值的U16 LCD_ReadPoint(u16 x,u16 y)函數。移植的關鍵在於把這三個函數與ucgui提供的接口函數匹配。
打開GUI\LCDDriver中的LCDDummy.c文件,找到int LCD_L0_Init(void)初始化函數,LCD_L0_SetPixelIndex(int x, int y, int PixelIndex)畫點函數,unsigned int LCD_L0_GetPixelIndex(int x, int y)讀取顏色值函數,把LCD驅動函數填入其中,如下圖:
關於LCD配置的含義的解釋,需要根據所選的屏幕的大小,顏色深度做出修改。網絡上有很多說明, 在此不再重複。
我在Keil uVision4中碰到的一些問題,做出記錄。
編譯過程中,出現. \Output\TFT觸摸屏.axf: Error: L6218E: Undefined symbol exit (referred from jerror.o). 錯誤
在網絡上搜到了一些解答,說是在編譯配置中選項不能使用微庫,如下圖:
我去掉這個選項後,發現編譯能夠通過。下載到開發版中,總是不能運行,調試發現,一開始就進入了硬件錯誤處理中斷void HardFault_Handler(void)中。
於是,我又把微庫選上,進入了UCGUI/JPEG/jerror.c中,找到error_exit (j_common_ptr cinfo)函數中的exit(EXIT_FAILURE),把這行給註釋掉,改用return直接返回。
再次編譯,通過。下載到開發板中,能夠正常運行。
(b)單色屏 配置:#define LCD_REVERSE (1)