標(biāo)題:
STM32移植uCGUI筆記
[打印本頁]
作者:
benbens
時(shí)間:
2015-7-15 02:05
標(biāo)題:
STM32移植uCGUI筆記
以下的工作都是建立在裸機(jī)正常顯示的情況下進(jìn)行的,在移植前必須得裸機(jī)顯示進(jìn)行測試,正常則往下做。
第一步:
在網(wǎng)上下載uCGUI的完整源碼,里面有三個(gè)文件夾,“Start”、“Sample”、“Tool”,打開Start文件夾,把其中的GUI和Config拷貝到自己工程目錄下,其中GUI里面有11一個(gè)文件,這都是uCGUI的結(jié)構(gòu)源碼。
第二步:
在工程目錄下建立新的MDK工程,在把其中的結(jié)構(gòu)源碼分別對應(yīng)全部添加到工程中
其中uCGUI/Config中有三個(gè)文件GUIConf.h、LCDConf.h、GUI_X.c,如果所使用的是觸摸屛,需添加GUITouchConf.h
GUIConf.h的內(nèi)容為(0為關(guān),1為開):
#ifndef GUICONF_H
#define GUICONF_H
#define GUI_OS (1) /* Compile with multitasking support */ //支持操作系統(tǒng)
#define GUI_SUPPORT_TOUCH (0) /* Support a touch screen (req. win-manager) *//觸摸關(guān)閉
#define GUI_SUPPORT_UNICODE (1) /* Support mixed ASCII/UNICODE strings */ //支持ASCII碼
#define GUI_DEFAULT_FONT &GUI_Font6x8 //默認(rèn)字體,可調(diào)整
#define GUI_ALLOC_SIZE 5000 /* Size of dynamic memory ... For WM and memory devices*/提供窗口的管理的內(nèi)存
/*********************************************************************
*
* Configuration of available packages
*/
#define GUI_WINSUPPORT 1 /* Window manager package available */
#define GUI_SUPPORT_MEMDEV 1 /* Memory devices available */
#define GUI_SUPPORT_AA 1 /* Anti aliasing available */
#endif /* Avoid multiple inclusion *
LCDConf.h的內(nèi)容為:
#ifndef LCDCONF_H
#define LCDCONF_H
#define LCD_XSIZE (320)
#define LCD_YSIZE (240)
#define LCD_CONTROLLER (9320) //液晶控制芯片型號(hào)
#define LCD_BITSPERPIXEL (16) //16位顯示格式
#define LCD_FIXEDPALETTE (565)
#define LCD_SWAP_RB (1)
//#define LCD_SWAP_XY (1)
#define LCD_INIT_CONTROLLER() LCD_MyInit()
#endif /* LCDCONF_H */
GUI_X.c的內(nèi)容為:
#include "GUI.h"
#include "GUI_X.h"
#include "delay.h"
U32 GUI_X_GetTaskId(void) {return 0;}
void GUI_X_Lock(void) {;}
void GUI_X_Unlock(void) {;}
void GUI_X_InitOS(void) {;}
void GUI_X_Log(const char *s){}
void GUI_X_Warn(const char *s){}
void GUI_X_ErrorOut(const char *s){}
void GUI_X_ExecIdle(void) {;}
void GUI_X_Init(void) {;}
void GUI_X_Delay(int Period) {delay_ms(Period);}
int GUI_X_GetTime(void) {return 0;}
GUI_X.c的作用是避免編譯出錯(cuò)。
第三步:
接口函數(shù)的匹配,打開uCGUI/LCDDriver,當(dāng)中有三個(gè)文件“LCDDummy.c”、“LCDNull.c”、“LCDWin.c”,另外在這個(gè)文件夾中加上自己液晶的驅(qū)動(dòng),一般都由廠家提供的,以ILI93xx.c為例。然后打開LCDDummy.c,在其中加入液晶驅(qū)動(dòng)的頭文件ILI93xx.h,
最后將其中如下的函數(shù)替換成這樣
int LCD_L0_Init(void)
{
ili9320_Initializtion(); //液晶驅(qū)動(dòng)的初始化
return 0;
}
void LCD_L0_SetPixelIndex(int x, int y, int PixelIndex)
{
ili9320_SetPoint(x,y,PixelIndex);//液晶驅(qū)動(dòng)的換點(diǎn)函數(shù)
}
unsigned int LCD_L0_GetPixelIndex(int x, int y)
{
return ili9320_GetPoint(x,y); //液晶驅(qū)動(dòng)的獲取點(diǎn)的函數(shù)
}
void LCD_L0_SetOrg(int x,int y)
{
}
void LCD_L0_XorPixel(int x, int y)
{
LCD_PIXELINDEX Index = ili9320_GetPoint(x,y);
ili9320_SetPoint(x,y,LCD_NUM_COLORS-1-Index);
}
void LCD_L0_DrawHLine(int x0, int y, int x1)
{
GUI_Line(x0,y,x1,y,LCD_COLORINDEX); //液晶驅(qū)動(dòng)的畫線函數(shù)
}
void LCD_L0_DrawVLine (int x, int y0, int y1)
{
GUI_Line(x,y0,x,y1,LCD_COLORINDEX);
}
第四步:調(diào)用GUI函數(shù)測試,這里以“Hello uCGUI!”為例,主函數(shù)的源碼如下:
#include<stm32f10x_lib.h>
#include "gui.h"
int main(void)
{
ALLConf_Init(void); //芯片工作的必要配置,時(shí)鐘、引腳等
GUI_Ini(); //初始化
GUI_DispStringAt("Hello uCGUI!",100,100);
while(1);
}
編譯下載后如果液晶上在(100.100)的位置上顯示“Hello uCGUI!”就說明移植成功了!
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1