【STM32】STemWin库,使用template API

news2025/4/15 18:10:14

目录

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的结构体变量内,是其中一个函数指针成员

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

修改屏幕分辨率

]

GUI_X.c

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

主函数

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

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

添加区域填充函数

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

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

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

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

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

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

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

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

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2334397.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Matlab Add Legend To Graph-图例添加到图

Add Legeng To Graph: Matlab的legend()函数-图例添加到图 将图例添加到图 ,图例是标记绘制在图上的数据序列的有用方法。 下列示例说明如何创建图例并进行一些常见修改,例如更改位置、设置字体大小以及添加标题。您还可以创建具有多列的图…

2025年七星棋牌跨平台完整源码解析(200+地方子游戏+APP+H5+小程序支持,附服务器镜像导入思路)

目前市面上成熟的棋牌游戏源码很多,但能做到平台全覆盖、地方玩法丰富、交付方式标准化的系统却不多。今天这套七星棋牌2023完整源码具备安卓/iOS/H5/微信小程序端四端互通能力,附带200多款地方子游戏,还配备了后台管理与自动热更系统&#x…

Go语言--语法基础4--基本数据类型--整数类型

整型是所有编程语言里最基础的数据类型。 Go 语言支持如下所示的这些整型类型。 需要注意的是, int 和 int32 在 Go 语言里被认为是两种不同的类型,编译器也不会帮你自动做类型转换, 比如以下的例子会有编译错误: var value2 in…

智慧乡村数字化农业全产业链服务平台建设方案PPT(99页)

1. 农业全产业链概念 农业全产业链是依托数字化、电子商务、云计算等技术,整合规划咨询、应用软件设计与开发等服务,推动农业产业升级和价值重塑,构建IT产业融合新生态。 2. 产业链技术支撑 利用云计算、大数据、区块链等技术,为…

信息系统项目管理师-软考高级(软考高项)​​​​​​​​​​​2025最新(二)

个人笔记整理---仅供参考 第二章信息技术发展 2.1信息技术及其发展 2.1.1计算机软硬件 2.1.2计算机网络 2.1.3存储和数据库 2.1.4信息安全 公钥公开,私钥保密 2.1.5信息技术的发展 2.2新一代信息技术及应用 2.2.1物联网 2.2.2云计算 2.2.3大数据 2.2.4区块链 2.2.5…

基于Springboot+Mysql的闲一品(含LW+PPT+源码+系统演示视频+安装说明)

系统功能 管理员功能:首页、个人中心、用户管理、零食分类管理、零食信息管理、订单评价管理、系统管理、订单管理。用户功能:首页、个人中心、订单评价管理、我的收藏管理、订单管理。前台首页功能:首页、零食信息、零食资讯、个人中心、后…

stm32week11

stm32学习 八.stm32基础 2.stm32内核和芯片 F1系统架构:4个主动单元和4个被动单元 AHB是内核高性能总线,APB是外围总线 总线矩阵将总线和各个主动被动单元连到一起 ICode总线直接连接Flash接口,不需要经过总线矩阵 AHB:72MHz&am…

从三次方程到复平面:复数概念的奇妙演进(二)

注:本文为 “复数 | 历史 / 演进” 相关文章合辑。 因 csdn 篇幅限制分篇连载,此为第二篇。 生料,不同的文章不同的点。 机翻,未校。 History of Complex Numbers 复数的历史 The problem of complex numbers dates back to …

基于视觉语言模型的机器人实时探索系统!ClipRover:移动机器人零样本视觉语言探索和目标发现

作者:Yuxuan Zhang 1 ^{1} 1, Adnan Abdullah 2 ^{2} 2, Sanjeev J. Koppal 3 ^{3} 3, and Md Jahidul Islam 4 ^{4} 4单位: 2 , 4 ^{2,4} 2,4佛罗里达大学电气与计算机工程系RoboPI实验室, 1 , 3 ^{1,3} 1,3佛罗里达大学电气与计算机工程系F…

LabVIEW往复式压缩机管路故障诊断系统

往复式压缩机作为工业领域的关键设备,广泛应用于石油化工、能源等行业,承担着气体压缩的重要任务。然而,其管路故障频发,不仅降低设备性能、造成能源浪费,还可能引发严重安全事故。因此,开发精准高效的管路…

springboot 项目 jmeter简单测试流程

测试内容为 主机地址随机数 package com.hainiu.example;import lombok.extern.slf4j.Slf4j; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotat…

算法思想之位运算(二)

欢迎拜访:雾里看山-CSDN博客 本篇主题:算法思想之位运算(二) 发布时间:2025.4.13 隶属专栏:算法 目录 滑动窗口算法介绍六大基础位运算符常用模板总结 例题判定字符是否唯一题目链接题目描述算法思路代码实现 汉明距离题目链接题目…

【计网】网络交换技术之报文交换(复习自用,了解,重要3)

复习自用的,处理得比较草率,复习的同学或者想看基础的同学可以看看,大佬的话可以不用浪费时间在我的水文上了 另外两种交换技术可以直接点击链接访问相关笔记: 电路交换 分组交换 一、报文交换的定义 报文交换(Me…

【动态规划】深入动态规划:背包问题

文章目录 前言01背包例题一、01背包二、分割等和子集三、目标和四、最后一块石头的重量|| 完全背包例题一、完全背包二、 零钱兑换三、零钱兑换||四、完全平方数 前言 什么是背包问题,怎么解决算法中的背包问题呢? 背包问题 (Knapsack problem) 是⼀种组…

BUUCTF-web刷题篇(25)

34.the mystery of ip 给出链接,输入得到首页: 有三个按钮,flag点击后发现页面窃取客户端的IP地址,通过给出的github代码中的php文件发现可以通过XFF或Client-IP传入值。使用hackbar或BP 使用XSS,通过github给出的目录…

StringBuilder类基本使用

文章目录 1. 基本介绍2. StringBuilder常用方法3. String、StringBuffer 和 StringBuilder 的比较4. String、StringBuffer 和 StringBuilder 的效率测试5. String、StringBuffer 和 StringBuilder 的选择 1. 基本介绍 一个可变的字符序列。此类提供一个与StringBuffer兼容的A…

设计模式 --- 访问者模式

访问者模式是一种行为设计模式,它允许在不改变对象结构的前提下,定义作用于这些对象元素的新操作。 优点: 1.​​符合开闭原则:新增操作只需添加新的访问者类,无需修改现有对象结构。 ​​2.操作逻辑集中管理​​&am…

HashTable,HashMap,ConcurrentHashMap之间的区别

文章目录 线程安全方面性能方面总结 线程安全方面 HashMap线程不安全,HashMap的方法没有进行同步,多个线程同时访问HashMap,并至少有一个线程修改了其内容,则必须手动同步。 HashTable是线程安全的,在HashMap的基础上…

LeetCode.225. 用队列实现栈

用队列实现栈 题目解题思路1. push2. pop3. empty CodeQueue.hQueue.cStack.c 题目 225. 用队列实现栈 请你仅使用两个队列实现一个后入先出(LIFO)的栈,并支持普通栈的全部四种操作(push、top、pop 和 empty)。 实现…

LVGL AnalogClock控件和Dclock控件详解

LVGL AnalogClock控件和Dclock控件详解 一、AnalogClock控件详解1. 概述2. 创建模拟时钟2.1 函数2.2 参数2.3 返回值 3. 设置时间3.1 函数3.2 参数 4. 获取时间4.1 函数4.2 参数 5. 设置样式5.1 常用样式属性5.2 示例代码 6. 更新时间6.1 定时器回调示例6.2 创建定时器 7. 示例…