目前还有触屏以及操作系统没有移植,所以只是移植了GUI的必要部分。虽然只移植了部分的GUI,看效果依然是不错的。
先完成好几个函数:
1、画点
2、水平线、垂直线
3、读取颜色
4、颜色取反
由于移植过程中涉及函数较多较长,这里贴出针对于这个TFT屏的部分函数:
画点:
void LcdSetAddr(u16 x,u16 y)
{
LcdWriteCommand(Lcd_InfoStruct.xcmd);
LcdWriteData(x & 0xff);
LcdWriteCommand(Lcd_InfoStruct.ycmd);
LcdWriteData(y & 0X1FF);
LcdWriteCommand(Lcd_InfoStruct.gram_cmd);
}
void LcdDrawPoint(u16 x,u16 y,u16 Color)
{
LcdSetAddr(x,y);
LcdWriteData(Color);
}
读颜色:
u16 LcdReadPoint(u16 x,u16 y)
{
u16 color_r;
LcdWriteCommand(Lcd_InfoStruct.xcmd); //дÈëÁÐ
LcdWriteData(x & 0xff);
LcdWriteCommand(Lcd_InfoStruct.ycmd); //дÈëÒ³
LcdWriteData(y & 0x1ff);
LcdWriteCommand(R34);
DelayUs(2);
color_r = LcdReadData();
return color_r;
}
这两个函数是针对于板子上配的TFT屏所写。经过调试是没有问题的。
GUI移植中必要的几个文件:
图中每一项的名字都对应源码的一个文件夹。
移植完成后再主函数里编写如下代码:
int main()
{
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
LedPinInit();
SysTickInit();
TimerInit(99,7199);
GUI_Init();
GUI_SetBkColor(GUI_RED);
GUI_SetColor(GUI_WHITE);
GUI_Clear();
DelayMs(500);
GUI_DrawHLine(200,0,239);
GUI_DispStringAt("liklon-->gui-->GD32107-EVAL",10,220);
GUI_DispStringAt("www.eepw.com.cn--->GD32F107",10,250);
GUI_FillCircle(40,40,30);
GUI_SetColor(TABLE[(gFlagColor + 1) % 3]);
GUI_FillCircle(120,40,30);
GUI_SetColor(TABLE[(gFlagColor + 2) % 3]);
GUI_FillCircle(200,40,30);
while(1)
{
if(gLedRunFlag > 100)
{
gFlagColor = (gFlagColor + 1) % 3;
gLedRunFlag = 0;
GUI_SetColor(TABLE[(gFlagColor) % 3]);
GUI_FillCircle(40,40,30);
GUI_SetColor(TABLE[(gFlagColor + 1) % 3]);
GUI_FillCircle(120,40,30);
GUI_SetColor(TABLE[(gFlagColor + 2) % 3]);
GUI_FillCircle(200,40,30);
}
}
}
这是一个动态的效果,下面先上一个静态的整体图:
下面看看动态的效果:
因为只移植了部分,只能完成,2D图像的绘制,字符串以及文本的各种效果的显示。在GD32上刷屏,跑GUI非常流畅,在这个性能方面与STM32相比也是毫不逊色。将触屏调试后再加入进去。同时代码也在导航帖分享,对GD32产生兴趣的童鞋可以瞅瞅!!!
我要赚赏金
