最近在弄ucGUI的移植,網(wǎng)上搜了不少資料,也問(wèn)了同學(xué),總算把簡(jiǎn)單的一個(gè)程序弄好了,現(xiàn)在跟大家分享下心得。該程序是直接用的原子大哥的TFTLCD顯示的例子,直接拿過(guò)來(lái)移植的。所用到的是原子大哥TFTLCD例子(庫(kù)函數(shù)版本)和ucGUI3.90源碼。
建工程就不說(shuō)了,附件里有,相信大家也看到別人建的工程了,下面直接說(shuō)重點(diǎn)。
由于ucGUI移植筆記內(nèi)容太多,就介紹其中幾點(diǎn)(具體的還需看附件內(nèi)容):
1. 如果LCD驅(qū)動(dòng)文件是lcd.c和lcd.h,最好改為別的名字,比如ili93xx.c和ili93xx.h。然后還要把LCD_Init()初始化函數(shù)改為L(zhǎng)CDx_Init();
2. 需要改的地方:
A. LCDConf.h中按照下面的圖就行,其余的可以刪除掉,注意紅框中是剛剛改過(guò)的LCD初始化函數(shù),改為剛剛更改的初始化函數(shù)就行。
B.接下來(lái)事GUIConf.h中的設(shè)置,目前只是用到簡(jiǎn)單的一個(gè)現(xiàn)實(shí)函數(shù),多以就全部設(shè)為0
C. 這個(gè)是LCD驅(qū)動(dòng)函數(shù)的修改,這三個(gè)最好改紅框選中的文件。
接下來(lái)就是更改的第一塊,首先的把第1部所更改的相應(yīng)的LCD底層函數(shù)的頭文件加進(jìn)來(lái),不然ucGUI沒(méi)辦法正常工作。然后就是第二個(gè)紅框給為自己的驅(qū)動(dòng)芯片型號(hào)。
再就是第二塊,找到畫(huà)藍(lán)線(xiàn)的兩個(gè)函數(shù),用方框里的函數(shù)取代,如果是用原子大哥的,第一個(gè)函數(shù)必須要用快速畫(huà)點(diǎn)函數(shù),因?yàn)楹瘮?shù)參數(shù)里有顏色這個(gè)參數(shù),畫(huà)點(diǎn)函數(shù)沒(méi)有,如果是別的程序,也是一樣,加入畫(huà)點(diǎn)函數(shù)就行,但必須要有顏色的參數(shù)。第二個(gè)函數(shù)就是讀取某點(diǎn)的顏色值的函數(shù),加進(jìn)來(lái)就行,我這兒直接就用了原子大哥的程序。
3. 最后修改主函數(shù)
有人納悶了,為什么把LCD初始化函數(shù)
給注釋掉了,沒(méi)關(guān)系,在前面
文件中不是有個(gè)宏定義嘛
這個(gè)宏定義已經(jīng)在
這個(gè)文件中調(diào)用,見(jiàn)下圖哦
還有一項(xiàng)特別注意的,如果你用原子大哥的LCD初始化函數(shù),移植完后,你會(huì)發(fā)現(xiàn)你的屏幕先白屏一下之后就馬上黑屏,而且后面無(wú)論設(shè)置什么顏色都是這樣的情況。在調(diào)用GUI_Init()的時(shí)候,這個(gè)函數(shù)會(huì)進(jìn)入LCD_Init(),然后再LCD_Init()函數(shù)里面有這樣的語(yǔ)句
#if (GUI_DEFAULT_BKCOLOR != GUI_INVALID_COLOR)
/* Clear video memory */
LCD_SetDrawMode(GUI_DRAWMODE_REV);
LCD_FillRect(0,0, GUI_XMAX, GUI_YMAX);
LCD_SetDrawMode(0);
#endif
這句#if (GUI_DEFAULT_BKCOLOR != GUI_INVALID_COLOR)里面的GUI_DEFAULT_BKCOLOR 初值是OXFFFF, GUI_INVALID_COLOR 初值也是0XFFFF,而原子哥的初始化函數(shù)最后有一句LCD_Clear(WHITE);這樣就把 GUI_INVALID_COLOR 的值設(shè)置成了0X0000;導(dǎo)致調(diào)用了下面的三個(gè)函數(shù)。從而出現(xiàn)上面的問(wèn)題。只要把 原子哥 的初始化函數(shù)LCD_Clear(WHITE); 注釋掉就不會(huì)錯(cuò)了,小問(wèn)題大錯(cuò)誤。這是引用的hua290565456的帖子里的話(huà),覺(jué)得很有用,就粘貼過(guò)來(lái)了。
這就是一個(gè)基本的ucGUI的移植。該筆記放在附件了,有工程和源碼,還有此貼的word文檔。