【STM32】STemWin库,使用template API

目录

CubeMX配置

工程文件配置

Keil配置

STemwin配置

GUIConf.c

LCDConf.c

打点函数

修改屏幕分辨率

GUI_X.c

主函数

添加区域填充函数


移植过程中需要一些参考手册,如下

STemwin使用指南

emWin User Guide & Reference Manual

CubeMX配置

参考驱动编写

【STM32】ST7789屏幕驱动-CSDN博客

在这个基础上继续开发即可

需要注意的是一定要开启CRC

工程文件配置

打开本地STemwin库路径,一般在如下路径里面

新建STemwin文件夹用于存放需要用到的文件

复制config文件夹下这些文件并改名

这里有一个手册,关于emwin的可以参考

复制整个inc文件夹

复制lib文件夹下的这个文件

复制OS文件夹下的GUI_X.c

最终应该包含如下文件

Keil配置

添加路径和文件包含

修改库文件属性为库

此时编译会报2个错误,意思是有数据类型不匹配了

如下修改即可

STemwin配置

STemWin配置包含两块:GUI配置和LCD配置

GUI配置默认色彩和默认字体还有内存

LCD配置一些硬件相关的

主函数调用GUI_Init()来初始化GUI

GUIConf.c

这个数还是比较大的,可以改小一些

LCDConf.c

主要是设备创建链接函数和设置size函数,还有一些其他函数是用来做一些特殊用途的

初始化的时候会调用LCD_X_DisplayDriver()

STemWin库支持大部分芯片的屏幕

如果不支持的话,在模板文件内已经有了完整的功能,只需要实现打点函数和读点函数,如果屏幕不支持读点就不用实现读点函数了

这个ST7789芯片其实是支持的,不过既然是移植了,就当作不支持来做吧,后续会出一篇直接用自带的库的文章

打点函数

打点函数在一个叫做GUI驱动模板API的结构体变量内,是其中一个函数指针成员

将这个结构体和库链接起来

修改屏幕分辨率

修改RGB模式

GUI_X.c

在系统滴答定时器里添加OS_TimeMS自增,这里要extern一下这个变量

主函数

由于现在只添加了打点函数,效率其实非常低,最基本的清屏函数都需要一个点一个点地去设置坐标,填充像素......

在6.25MHz的时钟频率下,清屏花了6.8s还是非常震撼的

添加区域填充函数

在6.25MHz的时钟频率下是150ms的清屏时间,把SPI时钟提上去应该就会快很多了

此时如果尝试画图的话,速度还是会很慢,因为默认的情况下用的仍然是打点函数

在6.25MHz的时钟频率下大概要6.7s

这里将之前实现的画彩色单线函数补上

改进后显示全屏图片耗时195ms

提高时钟至50MHz,时间降为66ms

字符串显示貌似只会调用打点函数,自带库是会用多字节发送的

至此,STemWin的移植已经完毕了

相关推荐
新晨单片机设计4 小时前
S004R-基于STM32单片机智能门禁系统(密码、指纹、人脸、刷卡、蓝牙)【Proteus仿真+Keil程序+原理图】
stm32·单片机·嵌入式硬件·proteus
至为芯4 小时前
PY32F071至为芯支持32位ARM内核的高主频MCU单片机
单片机·集成电路·芯片
桀人4 小时前
MCU系统架构——总线——统一编址
stm32·单片机·嵌入式硬件
可乐鸡翅好好吃5 小时前
通讯协议--硬件模拟和软件模拟
stm32·嵌入式硬件
Zw-awa5 小时前
STM32F103C8T6 最小系统板:从型号差异到启动方式
stm32
新思维软件5 小时前
基于边缘计算与多模态感知的服药依从性系统|X604261
嵌入式硬件·物联网开发
朝发如雪14 小时前
快速掌握单片机基础(3)(PWM)(通信协议基础)(串口通信时序与参数)(电气特性与电平标准)(51单片机UART寄存器配置)(串口应用层协议)
单片机
天空'之城16 小时前
单片机基础核心知识点汇总(四十)
单片机·嵌入式硬件
smartpi_ai16 小时前
离线语音模块误识别问题全面解决方案:命令词设计、防误触与灵敏度调优指南
人工智能·单片机·语音识别
LCG元16 小时前
STM32F103 驱动 HX711 称重实战:DOUT 就绪时序、增益切换陷阱与两点标定精度实测
stm32·单片机·嵌入式硬件