新聞中心

        stm32之uCGUI移植

        作者: 時(shí)間:2016-11-25 來源:網(wǎng)絡(luò) 收藏
        聲明:本教程是作者學(xué)習(xí)uCGUI過程中的筆記,最后整理出來,獻(xiàn)給初學(xué)者,旨在帶領(lǐng)初學(xué)者入門uCGUI,僅供學(xué)習(xí)之用,不得用于商業(yè)。如需轉(zhuǎn)載,請注明出處。

        本文引用地址:http://www.104case.com/article/201611/321348.htm

        說明

        平臺: stm32f103zet6

        TFTLCD型號: 2.8寸9341控制器

        ucgui源碼: 3.90a版本

        觸屏: 不帶觸屏(后續(xù)更新)

        操作系統(tǒng): 不支持

        移植教程

        一、準(zhǔn)備工作:

        (一) 源碼:準(zhǔn)備3.90版本的UCGUI源碼

        注:如果需要跑GUIDEMO,那么還需準(zhǔn)備GUIDEMO源碼。

        (二) LCD底層驅(qū)動(dòng):準(zhǔn)備LCD屏的底層驅(qū)動(dòng),接口函數(shù)如下:

        1、 設(shè)置坐標(biāo)點(diǎn);

        static void lcd_set_cursor(u16 xpos, u16 ypos);

        2、 在指定點(diǎn)畫指定顏色的點(diǎn);

        void lcd_set_point(u16 xpos, u16 ypos, u16 color);

        3、 讀取某個(gè)點(diǎn)的顏色值;

        u16 lcd_get_point(u16 x, u16 y);

        4、 在指定區(qū)域填充顏色(開窗口的方式,速度更快);

        void lcd_window_fill(u16 sx, u16 sy, u16 ex, u16 ey, u16 color);

        5、 LCD屏初始化(主要是出廠初始化代碼);

        void ili9341_initialize(void);

        注:這里列出了和UCGUI的接口函數(shù),這些函數(shù)的具體實(shí)現(xiàn)需要根據(jù)自己的LCD屏具體實(shí)現(xiàn)這些函數(shù)。

        二、 移植過程

        (一) 把UCGUI源碼copy到自己的工程中,UCGUI文件夾下面,方便管理;

        (二) 添加UCGUI源碼到工程中,放在對應(yīng)的組下面,方便管理,如圖:

        (三) 添加頭文件路徑,如圖:

        (四) 打開GUI_Config文件夾,編輯GUIConf.h文件,內(nèi)容如下:
        #define GUI_OS (0)
        #define GUI_SUPPORT_TOUCH (0)
        #define GUI_SUPPORT_UNICODE (1)
        #define GUI_DEFAULT_FONT &GUI_Font6x8
        #define GUI_ALLOC_SIZE 40*1024
        #define GUI_WINSUPPORT0
        #define GUI_SUPPORT_MEMDEV 1
        #define GUI_SUPPORT_AA 1

        (五) 打開GUI_Config文件夾,編輯LCDConf.h文件,內(nèi)容如下:
        #define LCD_XSIZE (320)
        #define LCD_YSIZE (240)
        #define LCD_BITSPERPIXEL (16)
        #define LCD_CONTROLLER (-1)
        #define LCD_FIXEDPALETTE (565)
        #define LCD_SWAP_RB (1)
        #define LCD_INIT_CONTROLLER() ili9341_initialize();

        (六) 打開GUI_LCDDriver文件夾,編輯LCDDummy.c文件,內(nèi)容如下:

        1、 先添加LCD驅(qū)動(dòng)文件的頭文件,以便下面函數(shù)調(diào)用;如:#include "tftlcd.h"

        2、 確保 #if (LCD_CONTROLLER == -1)
        && (!defined(WIN32) | defined(LCD_SIMCONTROLLER))
        中的 LCD_CONTROLLER == -1 ,和LCDConf.h中的宏定義對應(yīng)

        3、 在 void LCD_L0_SetPixelIndex(int x, int y, int PixelIndex) 函數(shù)最后一行添加如下語句:
        lcd_set_point(xPhys, yPhys, PixelIndex);

        4、 在 unsigned int LCD_L0_GetPixelIndex(int x, int y) 函數(shù) return語句之前添加如下語句:
        PixelIndex = lcd_get_point(x, y);

        5、 現(xiàn)在回到main函數(shù)

        1) 添加頭文
        #include "GUI.h"
        #include "GUIDEMO.h"

        2) 在main函數(shù)中先調(diào)用必要的初始化函數(shù)后,再調(diào)用GUI_Init(); 函數(shù),這個(gè)函數(shù)會調(diào)用LCD屏的初始化函數(shù)

        3) 為了測試UCGUI是否初始化成功,我們先調(diào)用幾個(gè)函數(shù)試試,在GUI_Init();下面接著調(diào)用如下函數(shù):
        GUI_SetBkColor(GUI_BLACK);
        GUI_SetColor(GUI_RED);
        GUI_Clear();
        GUI_SetFont(&GUI_Font24_1);
        GUI_DispStringAt("- - uCGUI disp Function sample - -",4,10);
        // 延時(shí)3s,方便觀看結(jié)果
        delay_ms(1000);
        delay_ms(1000);
        delay_ms(1000);
        看看是否把LCD刷成黑色,是否顯示紅色字符串

        4) 然后再while循環(huán)中調(diào)用 GUIDEMO_main(); 函數(shù),開始運(yùn)行GUIDEMO


        上一頁 1 2 下一頁

        關(guān)鍵詞: stm32uCGUI移

        評論


        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 桐梓县| 饶平县| 丰台区| 章丘市| 金川县| 张家港市| 合江县| 平乡县| 额尔古纳市| 鸡泽县| 嵊州市| 获嘉县| 三亚市| 车致| 临西县| 汉阴县| 永宁县| 托克逊县| 方山县| 阜平县| 察雅县| 清丰县| 门源| 恩平市| 平原县| 沅陵县| 进贤县| 师宗县| 鄱阳县| 牟定县| 临江市| 措美县| 承德市| 西峡县| 聂荣县| 庆阳市| 柏乡县| 武清区| 承德市| 石景山区| 互助|