本帖最后由 liuyuliuyuliuyu 于 2016-1-1 00:24 编辑
首先祝大家新年快乐!!!
本来想尝试先学习SDRAM、DSI等内容并学会驱动,然后在学习STemWin的移植,进而学习GUI设计。奈何作为一个小白,水平还是不行呀,看了几天没有效果。还好官方提供了STewWin的教程,已经做好了相关外设的驱动。可以先用官方的历程,体验GUI设计。可以在STM32CubeMx或Keil安装路径下找到,具体历程所在的位置(具体路径参考个人安装设置):
用MDK打开历程:
main函数里与GUI相关的主要代码:
BSP_SDRAM_Init();
/* Enable the CRC Module */
__HAL_RCC_CRC_CLK_ENABLE();
/* Init the STemWin GUI Library */
GUI_Init();
GUI_DispStringAt("Starting...", 0, 0);
/* Initialize LCD and LEDs */
GUI_DispStringAt("Initializing lcd...", 0, 12);
/* Activate the use of memory device feature */
WM_SetCreateFlags(WM_CF_MEMDEV);
MainTask();
主要是一些初始化,和字符串显示。具体函数就不说了,我现在也不是很了解。只说一下MainTask()函数。代码在BASIC_HelloWorld.c文件里。具体代码如下:
void MainTask(void) {
GUI_Clear();
GUI_SetFont(&GUI_Font20_1);
GUI_DispStringAt("Hello world!", (LCD_GetXSize()-100)/2, (LCD_GetYSize()-20)/2);
while(1);
}
我稍微做了一些修改,祝大家新年快乐。
void MainTask(void) {
GUI_Clear();
GUI_SetFont(&GUI_Font32B_1);
GUI_SetBkColor(255);
GUI_DispStringAt("Happy New Year 2016!", (LCD_GetXSize()-100)/2, (LCD_GetYSize()-20)/2);
GUI_DispStringAt("Happy New Year 21IC!", (LCD_GetXSize()-100)/2, (LCD_GetYSize()+40)/2);
while(1);
}
添加了GUI_SetBkColor(255);这行代码,将字体背景颜色设置为红色。这个函数的参数是一个32位整数。最低8位对应红色,接着的8位对应绿色。再接着的8位对应蓝色。
显示效果:
也可以用GUIBuilder软件设计界面,并显示出来。
软件路径如下:
具体怎么操作软件就先不介绍了,我也是刚开始学习。简单设计了一个名为Happy的对话框,添加了几个控件,具体界面如下:
点击File菜单下的Save会在当前路径下生成一个.c文件。打开.c文件将代码复制到BASIC_HelloWorld.c文件中,并修改MainTask()函数:
void MainTask(void) {
GUI_Clear();
CreateHappy();
while(1)
{
GUI_Delay(100);
}
}
CreateHappy()函数为拷贝过来的代码里的函数,函数名根据工程生成,Create后的Happy为对话框名。在while循环里需要加入GUI_Delay()函数,否则窗口刷新不出来。编译,下载。效果如下:
|