STemWin入门实战学习

从网上了解到嵌入式第三方GUI,emwin、ucGUI、STemWin,ST官方有GUI的应用,两天的初步了解,马上行动;

硬件:CPU:STM32F103C8

          屏幕:OLED 128*64

          驱动:SH1106

  基础:已经移植好了FreeRTOS,并且能够控制显示,本文只是介绍如何在原来的FreeRTOS工程中通过手动添加,使用STemWin

1、通过ST官网注册下载

2、工程中添加资源

 在下载的文件中找到要移植的文件如下

 将以上文件全部拷贝到自己项目下建立的STemWin文件夹中

在工程中添加对应的文件有:config,lib,os

注意:尽管我用的FreeRTOS,但我没用GUI_X_OS.c,因为添加他会报错,这里可能是我不是用STM32cubeMX生成的驱动代码,缺少一些变量定义;

3、修改文件

3.1修改LCDconf_lin_Template.h改为LCDconf.h

3.2修改LCDconf_lin_Template.c

根据自己显示屏大小修改下面参数

根据显示驱动修改下面参数

 

/*********************************************************************
*
*       LCD_X_Config
*
* Purpose:
*   Called during the initialization process in order to set up the
*   display driver configuration.
*   
*/

u8 stemwinbuff[64][16];//64行,16列16*8=128
void LCD_X_Config(void) {
 GUI_DEVICE_CreateAndLink(GUIDRV_LIN_1,GUICC_1, 0, 0);
 
    LCD_SetSizeEx (0, XSIZE_PHYS, YSIZE_PHYS);
    LCD_SetVSizeEx(0, XSIZE_PHYS, YSIZE_PHYS);
 
   LCD_SetVRAMAddrEx(0, (void *)&stemwinbuff[0][0]);
 
}

 其中stemwinbuff是我自己添加的,这也就是说显示点阵内容会输出到这数组里;

这里需要特别注意GUI_DEVICE_CreateAndLink(GUIDRV_LIN_1,GUICC_1, 0, 0);

STemWin提供两个驱动,LCDConf_FlexColor_Template.c和LCDConf_Lin_Template.c

黑白选择LCDConf_Lin_Template.c,GUICC_1是黑白参数。

当然emWin还提供其他驱动库,但下载的包里没找到;

先不去管他,做出来理解应用为重;

由于这个驱动库和我的硬件驱动不匹配,这里需要做一下转换;

4、显示数据转换

这一步不是必须的,如果驱动和硬件匹配就不需要

 从官方了解到GUIDRV_LIN_1驱动的显示方式如下:

也就是stemwinsuff[64][16]的数据是按照上图存储的。

而我的硬件实际显示驱动方式如下:

我要显示的是buff[8][128]是按照上图存储;

也就是后面需要将stemwinsuff[64][16]转换成buff[8][128]。

5、主程序中添加

RCC_AHBPeriphClockCmd(RCC_AHBPeriph_CRC, ENABLE);//CRC使能
GUI_Init();
GUI_UC_SetEncodeUTF8();
GUI_DispStringAt("123456",0,0);    
STemWin_to_oled1106();//显示数据转换

注意CRC必须使能,这在官网都有介绍

6、注意事项

关于STemWin的学习网上还是很多的,但由于每个用的硬件不一致,根据他人的方式学习可能导致不成功。我就失败了好几次,主要是emwin文件太长近1000页,没那么多耐心慢慢看;

我觉得把握几点

1、STemWin画图显示的数据输出在哪里

2、显示输出格式是什么,怎么和自己的配合

3、提供的文件大致作用

4、由于OLED数据需要转换,多开销了1KB,而STemwin也需要开销内存,导致内存不够

刚测试时,编译时候又报错了

目录

1、通过ST官网注册下载

2、工程中添加资源

3、修改文件

4、显示数据转换

5、主程序中添加

6、注意事项


  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值