UCGUI在STM32平臺移植經驗(無操作系統)

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)




發佈了34 篇原創文章 · 獲贊 2 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章