目前还有触屏以及操作系统没有移植,所以只是移植了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产生兴趣的童鞋可以瞅瞅!!!