【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的移植已经完毕了

相关推荐
TESmart碲视37 分钟前
HKS201-M24 大师版 8K60Hz USB 3.0 适用于 2 台 PC 1台显示器 无缝切换 KVM 切换器
单片机·嵌入式硬件·物联网·游戏·计算机外设·电脑·智能硬件
small_wh1te_coder1 小时前
硬件嵌入式学习路线大总结(一):C语言与linux。内功心法——从入门到精通,彻底打通你的任督二脉!
linux·c语言·汇编·嵌入式硬件·算法·c
花落已飘2 小时前
STM32中实现shell控制台(shell窗口输入实现)
stm32·单片机·嵌入式硬件
花落已飘2 小时前
STM32中实现shell控制台(命令解析实现)
stm32·shell
没有钱的钱仔2 小时前
STM32低功耗模式全面指南
css·stm32·css3
牵牛老人4 小时前
Qt处理USB摄像头开发说明与QtMultimedia与V4L2融合应用
stm32·单片机·qt
宇钶宇夕5 小时前
针对工业触摸屏维修的系统指南和资源获取途径
单片机·嵌入式硬件·自动化
和风化雨6 小时前
stm32的三种开发方式
stm32·单片机·嵌入式硬件
kanhao1006 小时前
三态逻辑详解:单片机GPIO、计算机总线系统举例
单片机·嵌入式硬件
小眼睛FPGA8 小时前
【RK3568+PG2L50H开发板实验例程】FPGA部分/紫光同创 IP core 的使用及添加
科技·嵌入式硬件·ai·fpga开发·gpu算力