在MDK環(huán)境下將3.90版本的UCGUI移植到STM32下了,為了方便大家,特寫此移植方法,大家可以借鑒(有錯誤之處,望大家指點出來共同討論!)
移植步驟:
第一步:首先,得把你的TFT底層驅(qū)動寫好,既在裸機下,可以正常顯示。
第二步:加入UCGUI程序包。
第三步:配置LCDConf.h GUIConf.h GUITouchConf.h(由于我的液晶不帶觸摸功能,此配置在此不講。)
? ?? ???配置LCDConf.h文件如下:
? ?? ???#ifndef LCDCONF_H
#define LCDCONF_H
#define LCD_XSIZE? ?? ?? ? (160)? ?//配置TFT的水平分辨率
#define LCD_YSIZE? ?? ?? ? (128)? ?//配置TFT的垂直分辨率
#define LCD_CONTROLLER? ???(54124) //TFT控制器的名稱
#define LCD_BITSPERPIXEL? ?(16)? ? //每個像素的位數(shù)
#define LCD_FIXEDPALETTE? ?(565)? ?//調(diào)色板格式
#define LCD_SWAP_RB? ?? ???(0)? ???//紅藍反色交換
#define LCD_INIT_CONTROLLER()? ?TFT_Init() ;? ?? ???//此處需要定義的是你的TFT初始化函數(shù)
? ?? ???#endif /* LCDCONF_H */
? ?? ???配置GUIConf.h文件如下:
? ?? ???#ifndef GUICONF_H
? ?? ???#define GUICONF_H
#define GUI_OS? ?? ?? ?? ?? ???(1)??//多任務(wù)
#define GUI_SUPPORT_TOUCH? ?? ?(0)??//觸摸
? ?? ?? ?? ?? ?? ?? ?#define GUI_SUPPORT_UNICODE? ? (1)??//Unicode支持??
#define GUI_DEFAULT_FONT? ?? ???&GUI_Font6x8??//GUI默認字體??
#define GUI_ALLOC_SIZE? ?? ?? ? 5000??//動態(tài)內(nèi)存的大小
#define GUI_WINSUPPORT? ?? ?? ? 1??//窗口控件支持
#define GUI_SUPPORT_MEMDEV? ?? ?1??//支持內(nèi)存設(shè)備
#define GUI_SUPPORT_AA? ?? ?? ? 1??/* Anti aliasing available */
? ?? ???#endif??/* Avoid multiple inclusion */
第四步:最關(guān)鍵的一步。那就是讓GUI能夠找到你的LCD驅(qū)動。修改LCDDriver。
? ?? ???在編寫你的TFT底層驅(qū)動程序的時候,一定不能忘記編寫這兩個函數(shù):設(shè)置一個像素和獲取一個像素的顏色,因為后面很多UCGUI和你的TFT驅(qū)動關(guān)聯(lián)起來需要這兩個函數(shù)為前提。以我的TFT為例:
void LCD_SetPixel(unsigned short x, unsigned short y, unsigned short color)??
{
….
…
}
unsigned short LCD_GetPixel(unsigned short x, unsigned short y)??
{
? ?…
…
}
這兩個函數(shù)寫好,并測試可以正常顯示后,接下來需要修改TFT與UCGUI關(guān)聯(lián)的函數(shù)(在一個C文件下(我的是ili9320_ucgui.c),建議大家在移植GCGUI之前最好下載個別人移植好的例程,對著修改這樣難度降低很多):
int LCD_L0_Init(void)
{? ?
??TFT_Init();
??return 0;
}
這個函數(shù),是GCGUI初始化TFT需要調(diào)用的,里面的函數(shù)就是你TFT底層驅(qū)動的初始化函數(shù)。
void LCD_L0_SetPixelIndex(int x, int y, int PixelIndex)
{
??LCD_SetPixel(x,y,PixelIndex);
}
unsigned int LCD_L0_GetPixelIndex(int x, int y)
{
??return LCD_GetPixel(x,y);
}
上面兩個函數(shù)是其他函數(shù)的最基本元素,其他函數(shù)比如畫線、點、圓都需要調(diào)用改函數(shù)。里面的LCD_SetPixel(x,y,PixelIndex)、LCD_GetPixel(x,y);就是你TFT底層驅(qū)動設(shè)置像素和獲取像素的兩個函數(shù)。
緊接著把該ili9320_ucgui.c文件下其他函數(shù)修改一下(凡是遇到設(shè)置像素和獲取像素的地方用以上兩個函數(shù)代替。)
接著,修改另一個C文件(ili9320_api.c)這里修改很簡單,僅僅也是將設(shè)置像素和獲取像素的函數(shù)替換掉自己定義的即可。
最后,網(wǎng)上說需要修改那個GUI_X.c文件,由于我下載的是STM32模板(ILI9320的控制器),那個文件沒有修改。
PS:我的開發(fā)環(huán)境MDK3.4以上版本,CPU:STM32F103RB??TFT與MCU接口:模擬總線8位 1.8英寸 160×128分辨率的TFT
UCGUI版本3.90? ? UCOS版本2.86??在原基礎(chǔ)上僅僅修改了以下幾個文件:ili9320.c
、ili9320_ucgui.c 、ili9320_api.c 、GUIConf.h、LCDConf.h
ucgui在stm32上的移植
- STM32(347763)
- 移植(27843)
相關(guān)推薦
101度開水ucgui視頻教程分享
101度開水繼推出 手把手教你在stm32上移植ucgui 之后又推出了一套UCGUI視頻教程 詳細系統(tǒng)的分析了UCGUI很好的幫助ucgui愛好者進行學習和開發(fā)分享幾集視頻希望對大家有幫助 謝謝
2013-09-20 18:36:07
7寸電容屏UCGUI移植不能實現(xiàn)觸摸功能
上傳我移植的程序,大家能不能幫我看一下是什么問題。MINISTM32 7寸大屏UCGUI移植.zip (1.54 MB )
2019-04-22 22:39:36
STM32+UCGUI+UCOSII移植出現(xiàn)error
如圖是我在移植的時候出現(xiàn)的error,但是我找了找根本沒有這兩個h文件,這個怎么辦STM32使用的是3.5的庫,ucgui使用的是3,90的源碼
2019-04-16 06:36:15
STM32 UCGUI問題, 請問下各位朋友,在移植控件(GUI-Widget)文件的時候總是提示未定義。要怎么添加呢!
STM32 UCGUI問題, 請問下各位朋友,在移植控件(GUI-Widget)文件的時候總是提示未定義。要怎么添加呢!
2016-06-10 00:09:09
STM32上移植了uCGUI3.90調(diào)用圖形繪制后字符不能顯示的原因?
最近在STM32上移植了uCGUI3.90,單獨測試各功能沒有問題,但是要聯(lián)合起來就會出錯!現(xiàn)在的現(xiàn)象是:單獨顯示字符能夠正常顯示,但若調(diào)用圖形繪制后字符便不能顯示了,同樣的程序在VC仿真完全正常
2020-05-18 18:11:11
STM32移植uCGUI按鍵控件出現(xiàn)了下圖情況
我在STM32上移植完uCGUI后,復制UCGUI手冊上button控件代碼想在觸摸屏上顯示一個按鍵“Click me...”,但是出現(xiàn)了下面的情況,請大神說一下是怎么回事!我的代碼:static
2019-04-26 01:54:00
Stm32之UCGUI移植
uc/GUI基礎(chǔ)移植以及根據(jù)GUI手冊編寫的若干小程序,適用于MINI開發(fā)板,僅供參考Stm32之UCGUI移植.rar (25.73 MB )
2019-07-12 01:32:35
UCGUI在stm32的移植該調(diào)用哪個函數(shù)?
今天成功完成了UCGUI在stm32的移植,晚上想在上面顯示一張位圖,我已經(jīng)把一張圖片用位圖轉(zhuǎn)換工具轉(zhuǎn)換成c語言了,但是接下來我就不知道該調(diào)用哪個函數(shù),應該把生成的c文件加到那個文件下面。成功做好
2019-07-17 04:24:33
UCGUI如何深入學習圖型潔面開發(fā)
小弟最近移植UCGUI到STM32上,已經(jīng)成功,但是最近想做給個圖形,但是苦于不知如何去用GUI函數(shù)制作漂亮的界面,比如說,我想在TFT上模擬一個溫度計,或者模擬儀表盤之類的,但是不知如何下手,請大俠給點建議啊或者資料啊
2013-11-10 18:28:04
評論