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

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

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

修改屏幕分辨率

]

GUI_X.c

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

主函数

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

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

添加区域填充函数

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

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

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

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

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

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

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

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

 

相关文章:

【STM32】STemWin库,使用template API

目录 CubeMX配置 工程文件配置 Keil配置 STemwin配置 GUIConf.c LCDConf.c 打点函数 修改屏幕分辨率 GUI_X.c 主函数 添加区域填充函数 移植过程中需要一些参考手册,如下 STemwin使用指南 emWin User Guide & Reference Manual CubeMX配置 参考驱…...

Web开发-JavaEE应用动态接口代理原生反序列化危险Invoke重写方法利用链

知识点: 1、安全开发-JavaEE-动态代理&序列化&反序列化 2、安全开发-JavaEE-readObject&toString方法 一、演示案例-WEB开发-JavaEE-动态代理 动态代理 代理模式Java当中最常用的设计模式之一。其特征是代理类与委托类有同样的接口,代理类…...

C语言中while的相关题目

一、题目引入 以下程序中,while循环的循环次数是多少次? 二、代码分析 首先要明确的一点 while循环是当循环条件为真 就会一直循环 不会停止 while中i是小于10的 说明i可以取到0 1 2 3 4 5 6 7 8 9 进入第一个if判断i小于1为真时执行continue i0是为真的 执行continue 后…...

在Ubuntu下交叉编译 Qt 应用程序(完整步骤)

1、下载交叉编译器下: st-example-image-qt wayland-openstlinux-weston-stm32mp1-x86_64-toolchain-3.1-snapshot.sh 通过网盘分享的文件:STM32项目 链接: https://pan.baidu.com/s/1hTvJT2r6czWCrKSuNEZCuw?pwdth7t 提取码: th7t --来自百度网盘超级…...

深入剖析 Axios 的 POST 请求:何时使用 qs 处理数据

在前端开发中,Axios 是一个广泛使用的用于发送 HTTP 请求的库,特别是在处理 POST 请求时,数据的处理方式会直接影响到请求能否正确被后端接收和处理。其中,使用 qs 库对数据进行处理是一个常见的操作点,本文将深入探讨…...

Python中NumPy的随机操作

在数据科学、机器学习和科学计算中,随机数的生成和操作是不可或缺的一部分。NumPy作为Python中强大的数值计算库,提供了丰富的随机数生成工具,能够满足从简单随机数生成到复杂概率分布模拟的多种需求。本文将深入探讨NumPy的随机操作功能&…...

从代码学习深度学习 - 多头注意力 PyTorch 版

文章目录 前言一、多头注意力机制介绍1.1 工作原理1.2 优势1.3 代码实现概述二、代码解析2.1 导入依赖序列掩码函数2.2 掩码 Softmax 函数2.3 缩放点积注意力2.4 张量转换函数2.5 多头注意力模块2.6 测试代码总结前言 在深度学习领域,注意力机制(Attention Mechanism)是自然…...

通过扣子平台工作流将数据写入飞书多维表格

1. 进入扣子平台,并创建工作流扣子 扣子是新一代 AI 大模型智能体开发平台。整合了插件、长短期记忆、工作流、卡片等丰富能力,扣子能帮你低门槛、快速搭建个性化或具备商业价值的智能体,并发布到豆包、飞书等各个平台。https://www.coze.cn…...

python专题2-----用python生成多位,值均是数字的随机数

有很多方法可以用 Python 生成 多位随机数。我将向您介绍几个常用的方法,并解释它们的优缺点(此处以4位随机数为例): 1. 使用 random.randint() 这是最简单直接的方法: import randomrandom_number random.randint…...

Mybatis的简单介绍

文章目录 MyBatis 简介 1. MyBatis 核心特点2. MyBatis 核心组件3. MyBatis 基本使用示例(1) 依赖引入(Maven)(2) 定义 Mapper 接口(3) 定义实体类(4) 在 Service 层调用 4. MyBatis 与 JPA/Hibernate 对比 MyBatis 简介 MyBatis 是一款优秀的 持久层框…...

山东大学软件学院创新项目实训(11)之springboot+vue项目接入deepseekAPI

因为该阶段是前后端搭建阶段,所以没有进大模型的专项训练,所以先用老师给的deepseek接口进行代替 且因为前端设计部分非本人负责且还没有提交到github上,所以目前只能先编写一个简易的界面进行功能的测试 首先进行创建model类 然后创建Cha…...

Qt绘图事件

目录 1.绘图事件 1.1绘图事件 1.2声明一个画家对象 2.画线、画圆、画矩形、画文字 2.1画线 ​编辑 2.2画圆 2.3画矩形 2.4画文字 3.设置画笔 3.1设置画笔颜色 3.2设置画笔宽度 3.3设置画笔风格 4.设置画刷 4.1填色 4.2设置画刷风格 5.绘图高级设置 5.1设置抗锯…...

Linux 内核 BUG: Android 手机 USB 网络共享 故障

众所周知, 窝日常使用 ArchLinux 操作系统, 而 ArchLinux 是一个滚动发行版本, 也就是各个软件包更新很快. 然而, 突然发现, Android 手机的 USB 网络共享功能 BUG 了. 经过一通排查, 发现是 Linux 内核造成的 BUG. 哎, 没办法, 只能自己动手修改内核代码, 修复 BUG 了. 本文…...

程序化广告行业(82/89):解锁行业术语,开启专业交流之门

程序化广告行业(82/89):解锁行业术语,开启专业交流之门 在程序化广告这个充满活力与挑战的行业里,持续学习是我们不断进步的动力源泉。一直以来,我都期望能和大家一起深入探索这个领域,共同成长…...

Linux的网络配置的资料

目前有两种方式,network和NetworkManager。 network方式是在CentOS 6及更早版本中引入的配置方法,支持使用配置文件的方式管理网卡的配置。 NetworkManager是在CentOS 7及后续的版本中使用的配置方法,支持使用命令行和图形化界面的方式来管理…...

linux: 文件描述符fd

目录 1.C语言文件操作复习 2.底层的系统调用接口 3.文件描述符的分配规则 4.重定向 1.C语言文件操作复习 文件 内容 属性。所有对文件的操作有两部分:a.对内容的操作;b.对属性的操作。内容是数据,属性其实也是数据-存储文件&#xff0c…...

每天学一个 Linux 命令(16):mkdir

每天学一个 Linux 命令(16):mkdir 命令简介 mkdir(Make Directory)是 Linux 和类 Unix 系统中用于创建新目录的基础命令。它允许用户快速创建单个目录、多级嵌套目录,并能灵活设置目录权限。 主要用途 创建单个目录:快速生成新的空目录。递归创建多级目录:自动生成缺…...

Java微服务注册中心深度解析:环境隔离、分级模型与Eureka/Nacos对比

在微服务架构体系中,注册中心如同神经系统般承担着服务发现与健康管理的核心职能。本文将从生产环境实践出发,系统剖析注册中心的环境隔离策略、分级部署模型,并通过Eureka与Nacos两大主流组件的全方位对比,帮助开发者构建高可用服…...

c++:new关键字

目录 基本语法 使用举例 应用场景 使用 new 时的注意事项 基本语法 Type* ptr new Type;Type 是你要创建的类型(可以是基本类型、结构体、类等) new Type 表示在堆上创建一个 Type 类型的对象 ptr 是一个指针,指向这个对象 使用举例 …...

理解 MCP 协议的数据传递:HTTP 之上的一层“壳子

以下是以 CSDN 博客的风格记录你对 MCP 协议数据传递的理解和发现,内容涵盖了 MCP 协议基于 HTTP 的本质、JSON-RPC 的“壳子”作用,以及为什么熟悉 HTTP 协议就足以理解 MCP 的数据传递。文章面向技术社区,结构清晰,适合分享。 理…...

word中的mathtype公式编辑时,大(中)括号会存在很大的空白

如下所示,公式编辑的时候发现总会多一个空白,怎么删也删不掉 这主要是公式的分隔符问题,选择:“格式”-“分隔符对齐”,选择第三个可以消除下面的空白 点击“确认”,效果如下所示:...

【Java】查看当前 Java 使用的垃圾回收器

一、查询 Code import java.lang.management.GarbageCollectorMXBean; import java.lang.management.ManagementFactory; import java.util.Arrays; import java.util.List;public class GCTypeDetector {public static void main(String[] args) {List<GarbageCollectorMX…...

Linux编程c/c++程序

前言 我们Windows系统下的idea可以说是非常智能了&#xff0c;集成了各种开发工具&#xff0c;包括并不限于编辑器/编译器/调试器/自动化构建工具/版本控制工具……而在Linux系统中&#xff0c;每个组件之间是相互独立的&#xff0c;每个组件各司其职&#xff0c;共同协作完成…...

【前端网络请求入门】XMLHttpRequest与Fetch保姆级教程

新手学前端时&#xff0c;经常会被「如何让网页和服务器说话」难住。今天我们用最通俗的语言&#xff0c;把浏览器最常用的两种网络请求方式——XMLHttpRequest和Fetch讲清楚&#xff0c;还会带完整的代码示例&#xff0c;跟着敲一遍就能上手&#xff01; 一、先搞懂「网络请求…...

redis单机安装

redis单机安装 下载地址 官网&#xff1a;https://redis.io/下载列表页面&#xff1a;https://download.redis.io/releases/ 说明 版本选择&#xff1a;redis-7.0.0.tar.gz下载地址&#xff1a;https://download.redis.io/releases/redis-7.0.0.tar.gz 安装前准备 在linu…...

从零手写RPC-version0

参考文档 https://github.com/he2121/MyRPCFromZero Version-0 0、写项目第一步&#xff0c;先添加远程仓库 先在 github 上新建仓库&#xff0c;然后将本地新建的项目推送到远程仓库中 由于网上很多教程&#xff0c;所以本节不再赘述&#xff08;可以让 chatGPT给出一个完…...

MOM成功实施分享(八)汽车活塞生产制造MOM建设方案(第二部分)

在制造业数字化转型的浪潮中&#xff0c;方案对活塞积极探索&#xff0c;通过实施一系列数字化举措&#xff0c;在生产管理、供应链协同、质量控制等多个方面取得显著成效&#xff0c;为行业提供了优秀范例。 1.转型背景与目标&#xff1a;活塞在数字化转型前面临诸多挑战&…...

二、Android Studio环境安装

一、下载安装 下载 Android Studio 和应用工具 - Android 开发者 | Android DevelopersAndroid Studio 提供了一些应用构建器以及一个已针对 Android 应用进行优化的集成式开发环境 (IDE)。立即下载 Android Studio。https://developer.android.google.cn/studio?hlzh-c…...

构件与中间件技术:概念、复用、分类及标准全解析

以下是对构件与中间件技术相关内容更详细的介绍&#xff1a; 一、构件与中间件技术的概念 1.构件技术 定义&#xff1a;构件是具有特定功能、可独立部署和替换的软件模块&#xff0c;它遵循一定的规范和接口标准&#xff0c;能够在不同的软件系统中被复用。构件技术就是以构…...

亲手打造可视化故事线管理工具:开发全流程、难点突破与开发过程经验总结

亲手打造可视化故事线管理工具&#xff1a;开发全流程、难点突破与开发过程经验总结 作为还没入门的业余编程爱好者&#xff0c;奋战了2天&#xff0c;借助AI开发一款FLASK小工具&#xff0c;功能还在完善中&#xff08;时间轴可以跟随关联图缩放&#xff0c;加了一个用C键控制…...

CSS 字体学习笔记

在网页设计中&#xff0c;字体的使用对于提升用户体验和页面美观性至关重要。CSS 提供了一系列字体属性&#xff0c;用于控制文本的显示效果。以下是对 CSS 字体属性的详细学习笔记。 一、字体系列&#xff08;font-family&#xff09; 1. 字体系列的分类 在 CSS 中&#xf…...

通过 spring ai 对接 deepseek ai 大模型通过向量数据库,完成 AI 写标书及构建知识库功能的设计与开发

AI写标书及知识库构建详细设计方案 一、系统架构设计 +-------------------+ +-------------------+ +-------------------+ | 用户交互层 | | AI服务层 | | 知识库存储层 | | (Web/API) |---->| (Spring AI) |---…...

cropperjs 2.0裁剪图片后转base64提示“Tainted canvases may not be exported”跨域问题的解决办法。

目录 为什么会有这边文章 辛酸历程&#xff0c;不看也罢 想解决问题&#xff0c;看这里就够了 问题已解决&#xff0c;后边还是废话 为什么会有这边文章 最近&#xff0c;做一个项目需要用在前端实现图片裁剪功能&#xff0c;毋庸置疑&#xff0c;cropperjs是不二选择。当在…...

2、JSX:魔法世界的通行证——用魔法符号编织动态界面

一、开篇&#xff1a;魔法符号的觉醒 "看呐&#xff0c;赫敏&#xff01;这根魔杖&#xff08;React组件&#xff09;为何能自动绘制出动态界面&#xff1f;"年轻的巫师学徒罗恩指着闪烁的屏幕惊呼。 "这就是JSX魔法阵的威力&#xff0c;"邓布利多校长挥舞…...

八大排序算法

目录 八大排序算法排序算法的稳定性比较排序插入排序直接插入排序希尔排序希尔排序的时间复杂度计算 选择排序直接选择排序堆排序 交换排序冒泡排序快速排序递归hoare版本挖坑法lomuto前后指针 非递归 归并排序排序性能对比 非比较排序计数排序 比较排序算法总结 八大排序算法 …...

搭建一个Spring Boot聚合项目

1. 创建父项目 打开IntelliJ IDEA&#xff0c;选择 New Project。 在创建向导中选择 Maven&#xff0c;确保选中 Create from archetype&#xff0c;选择 org.apache.maven.archetypes:maven-archetype-quickstart。 填写项目信息&#xff1a; GroupId&#xff1a;com.exampl…...

Google A2A协议解析:构建分布式异构多Agent系统

一、A2A 是什么&#xff1f;有什么用&#xff1f; 1.1 A2A 是什么&#xff1f; A2A&#xff08;Agent-to-Agent Protocol&#xff09;是Google最新推出的一项开源协议&#xff0c;旨在为AI智能体&#xff08;Agents&#xff09;提供标准化的通信方式。它允许不同框架&#xf…...

【Android读书笔记】读书笔记记录

文章目录 一. Android开发艺术探索1. Activity的生命周期和启动模式1.1 生命周期全面分析 一. Android开发艺术探索 1. Activity的生命周期和启动模式 1.1 生命周期全面分析 onPause和onStop onPause后会快速调用onStop&#xff0c;极端条件下直接调用onResume 当用户打开新…...

支持selenium的chrome driver更新到135.0.7049.84

最近chrome释放新版本&#xff1a;135.0.7049.84 如果运行selenium自动化测试出现以下问题&#xff0c;是需要升级chromedriver才可以解决的。 selenium.common.exceptions.SessionNotCreatedException: Message: session not created: This version of ChromeDriver only su…...

【玩泰山派】MISC(杂项)- 使用vscode远程连接泰山派进行开发

文章目录 前言流程1、安装、启动sshd2、配置一下允许root登录3、vscode中配置1、安装remote插件2、登录 **注意** 前言 有时候要在开发板中写一写代码&#xff0c;直接在终端中使用vim这种工具有时候也不是很方便。这里准备使用vscode去通过ssh远程连接泰山派去操作&#xff0…...

利用阿里云企业邮箱服务实现Python群发邮件

目录 一、阿里云企业邮箱群发邮件全流程实现 1. 准备工作与环境配置 2. 收件人列表管理 3. 邮件内容构建 4. 附件添加实现 5. 邮件发送核心逻辑 二、开发过程中遇到的问题与解决方案 1. 附件发送失败问题 2. 中文文件名乱码问题 3. 企业邮箱认证失败 三、完整工作流…...

中文编码,GB系列,UTF

图片来源&#xff1a;https://zhuanlan.zhihu.com/p/701690894 文章目录 ASCIIGB系列编码UTF编码 ASCII American Standard Code for Information Interchange 一个字节&#xff0c;但其实只用了一半&#xff1a; 128个字符 GB系列编码 “国标” 和ASCII是兼容的。 GB2312…...

车载以太网-TLS

文章目录 车载以太网与TLS的技术背景核心定位车载以太网TLS的技术架构车载TLS的核心安全机制TLS报文结构详解TLS工作机制密钥交换与计算流程标题完整握手流程(1-RTT)数据传输加密流程车载TLS的独特优化策略车载TLS的安全威胁相关标准车载以太网TLS(Transport Layer Security…...

【大英赛】大英赛准备笔记

听力 总结 提醒专注 一题一个听力时&#xff0c;听是重点 抓紧时间往后审题 比较容易的部分&#xff1a;secA & secD中的dictation&#xff0c;在大致审当前的基础上&#xff0c;分别利用这个时间提前看后面的secB√& summery secA 听之前应当大致审选项&#x…...

有序数组的平方

暴力排序 每个数平方以后排个序 class Solution { public:vector<int> sortedSquares(vector<int>& nums) {int slow0,fast0;int nnums.size();while(fast<n){nums[slow]nums[fast]*nums[fast];fast;slow;}sort(nums.begin(),nums.end());return nums;} }…...

Python基于Django的房屋信息可视化及价格预测系统(附源码,文档说明)

博主介绍&#xff1a;✌IT徐师兄、7年大厂程序员经历。全网粉丝15W、csdn博客专家、掘金/华为云//InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;&#x1f3…...

【5G-A学习】ISAC通信感知一体化学习小记

通信感知一体化&#xff08;Integrated Sensing and Communication, ISAC&#xff09;是一种将无线通信与环境感知功能深度融合的技术&#xff0c;通过共享硬件、频谱和信号处理流程&#xff0c;实现通信与感知的协同增效。其核心原理及无人机与飞鸟的识别方式如下&#xff1a;…...

深入解析@Validated注解:Spring 验证机制的核心工具

一、注解出处与核心定位 1. 注解来源 • 所属框架&#xff1a;Validated 是 Spring Framework 提供的注解&#xff08;org.springframework.validation.annotation 包下&#xff09;。 • 核心定位&#xff1a; 作为 Spring 对 JSR-380&#xff08;Bean Validation 2.0&#…...

学生考勤管理系统(jsp+ssh+mysql5.x)含文档

学生考勤管理系统&#xff08;jspsshmysql5.x&#xff09;含万字详细文档 学生考勤管理系统是一个用于管理学生出勤和请假的系统&#xff0c;系统登录页面提供账号和密码输入框&#xff0c;用户可以选择角色进行登录。系统主菜单包括班级管理、用户管理、课程表管理和考勤情况…...

【响应式编程】Reactor 常用操作符与使用指南

文章目录 一、创建操作符1. just —— 创建包含指定元素的流2. fromIterable —— 从集合创建 Flux3. empty —— 创建空的 Flux 或 Mono4. fromArray —— 从数组创建 Flux5. fromStream —— 从 Java 8 Stream 创建 Flux6. create —— 使用 FluxSink 手动发射元素7. generat…...