本帖最后由 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()函数,否则窗口刷新不出来。编译,下载。效果如下: 
 
 
 
 
 
 
 
 
  |