当前位置: 首页 > news >正文

嵌入式 STM32 实现STemwin移植+修改其配置文件,驱动LCD显示文本 (含源码,建议收藏)

目录

一、STemwin 简介

二、源码下载 

1、在移植STemwin源码之前,需要一个已经具备LCD读写,填充指定颜色等函数功能的一个工程;

2、STemwin 

3、源码下载

三、STemwin移植

1、解压源码路径

2、STemwin文件介绍 

 四、修改配置文件,驱动LCD显示文本

1、属性修改

2、修改GUIConf.c文件

 3、修改GUIConf.h文件

4、修改GUIDRV_Template.c文件

4.1 修改打点函数

4.2修改读点函数

4.3 修改填充颜色函数

4.4 修改画一根线函数 

5、修改GUIDRV_Template.h文件

6、LCDConf_FlexColor_Template.c文件 

7、修改之前添加的GUIDRV_Tempalte.h文件里面的API函数 

8、修改GUI延时文件 

9、GUI初始化+开启CRC时钟 

1、找到开启CRC的时钟--AHB1ENR 

2、调用GUI_Init();初始化函数

10、显示文本 

五、完整源码 


一、STemwin 简介

参考百度资料说明

链接:

https://cloud.tencent.com/developer/article/1938083

二、源码下载 

1、在移植STemwin源码之前,需要一个已经具备LCD读写,填充指定颜色等函数功能的一个工程;

可以适当的把工程内没有使用到的文件删除掉;

2、STemwin 

STenWin是基于enWin发展而来,

 emWin是由德国SEGGER公司开发,可为图形LCD设计提供高级支持,极大简化了LCD设计。为恩智浦ARM微控制器用户免费提供的emWin图形库。

在国内做嵌入式系统的大部分都使用emwin,其简单来说就是一套图形库。

做电子硬件开发,常常要为设计一个良好的UI伤透脑筋,写很多的代码也不尽人意,还要不断调试,emwin正是解决这种用户界面需求的图形库,只要在你的设计中嵌入这种图形库,就能很方便使用里面的模块化设计,既能提高设计界面图形质量,还大大的减少开发时间。

3、源码下载

通过官网下载的STemwin源码方式一共有两种;

方法1:备注,这个是21年的下载方式,22年官网更新,目前这个下载途径已经没得了;

没得了就不用过多介绍了,这边介绍第二种方法:

方法2:

ST把STEMWIN源码和STM32CubeF4放一起了,我们去官网下载这个STM32CubeF4文件,即可得到STEMWIN源码

 open software page:

 

 获取自己想要的版本软件:

接受协议:

 

登录或者注册:

 

 

下载路径:

 

解压,完成下载源码操作。

三、STemwin移植

备注:单片机或者芯片不运行操作系统,我们就成为裸机;

1、解压源码路径

2、STemwin文件介绍 

 

文件夹说明:

  1. Config     LCD接口以及emWin配置文件;
  2. Documentation     STemwin的函数说明文档;
  3. inc     函数的头文件;
  4. Lib 函数库;
  5. OS 裸机或者OS情况下的驱动;
  6. Simulation  仿真用到的文件;
  7. Software   使用到的软件

 把STemwin的所有源码移植到工程中;

 

区分:

 

在Lib 文件当中,保留了连发哥哥文件,将他们删除掉;

 

只需要这几个就可以了;

 

3、打开自己工程,添加文件

 

添加路径

 

添加stemwin 文件到工程当中

 

添加不带有操作系统的文件

 

 最终添加以下五个文件就可以了;

然后编译报错一个错误:LCDConf.h文件没有找到;

 

解决;

在inc文件下,手动创建一个叫LCDConf.h的文件就可以了;

 编译没有报错,完成移植;

 

 四、修改配置文件,驱动LCD显示文本

1、属性修改

查看

 

需要修改的文件;

 

 

上图为:STemWin结构层级图

2、修改GUIConf.c文件

 

 

 3、修改GUIConf.h文件

默认即可;操作系统宏定义;

 

4、修改GUIDRV_Template.c文件

修改 GUIDRV_Template.c 文件在这个文件中我们要完成 STemWin 的打点、 读点、 填充等函数的实现, 最后还优化了 16BPP, 这个文件是移植的重点, 这个文件中的代码优化好的话会极大的提升 STemWin 的性能, 在这个文件中我们需要修改四个函数: _SetPixelIndex()_GetPixelIndex()_FillRect()_DrawBitLine16BPP()

4.1 修改打点函数

 

程序修改:

 

4.2修改读点函数

修改:

 

4.3 修改填充颜色函数

4.4 修改画一根线函数 

5、修改GUIDRV_Template.h文件

添加GUIDRV_Template.h到工程当中

6、LCDConf_FlexColor_Template.c文件 

修改屏幕的像素参数

 修改配置文件

 

修改颜色的宏定义

 

 

7、修改之前添加的GUIDRV_Tempalte.h文件里面的API函数 

 

跳转到需要的替换的宏定义

 

替换之后的

 

8、修改GUI延时文件 

9、GUI初始化+开启CRC时钟 

在官方的入门指南文档中,初始化说明如下:

在调用GUI_Init();之前应该先初始化CRC时钟,后进行初始化GUI

1、找到开启CRC的时钟--AHB1ENR 

找到函数库的AHB1ENR函数

 

 

2、调用GUI_Init();初始化函数

 注意:GUI_Init();初始化函数必须初始化在我们LCD函数初始化之后

10、显示文本 

通过调用显示文本函数,验证STemwin是否移植成功,打开emwin手册,找到显示文本文章

选择其中一个能够显示文本的API函数

 

找到函数实例

 

调用显示

 

效果图:

 

五、完整源码 

编写不易,私聊!!!

http://www.lryc.cn/news/19248.html

相关文章:

  • [计算机网络(第八版)]第一章 概述(学习笔记)
  • AI绘图:常用镜头和视角
  • TCP四次挥手
  • Tomcat源码分析-类加载器
  • MySQL进阶篇之视图/存储过程/触发器
  • 【一看就会】实现仿京东移动端页面滚动条布局
  • 网易的“草长莺飞二月天”:增长稳健,加码研发,逐浪AI
  • NPC内网穿透教程-入门
  • 【Linux修炼】14.磁盘结构/文件系统/软硬链接/动静态库
  • Spring源码分析:创建 BeanDefinition 流程
  • Linux 练习一(思维导图 + 练习过程)
  • 高德地图基础教程超详细版
  • 基于A7核开发板的串口实现控制LED亮灭
  • HyperGBM用Adversarial Validation解决数据漂移问题
  • 关基系统三月重保安全监测怎么做?ScanV提供纯干货!
  • RK3588关键电路 PCB Layout设计指南
  • 二分边界详细总结
  • STM32---备份寄存器BKP和 FLASH学习使用
  • Python-生成元组和字典
  • I.MX6ULL内核开发10:设备树
  • 【大数据】记一次hadoop集群missing block问题排查和数据恢复
  • 国产音质好的蓝牙耳机有哪些?国产音质最好的耳机排行
  • CTFer成长之路之XSS的魔力
  • 行锁、表锁、主键外键、表之间的关联关系
  • JavaScript 进阶(面试必备)--charater4
  • ARM+FPGA架构开发板PCIE2SCREEN示例分析与测试-米尔MYD-JX8MMA7
  • 51单片机入门 - SDCC / Keil_C51 会让没有调用的函数参与编译吗?
  • OpenCV只含基本图像模块编译
  • Java实现阴历日历表(附带星座)
  • Python入门之最基础