STM32屏幕计时器

news2024/11/26 11:54:30

目录

  • 一、最终效果
  • 二、实现思想
  • 三、实现过程
    • 3.1 屏幕显示
    • 3.2 中断处理

一、最终效果

显示屏显示计时时间,格式为 00:00:00,依次为 时:分:秒,程序运行之后自动计时,当按下按键,计时清零,按下按键采用外部中断。

二、实现思想

调用lcd驱动代码让屏幕显示时间信息,

三、实现过程

3.1 屏幕显示

屏幕为SPI协议的128x128的LCD屏幕,查看原理图,找到对应接口
在这里插入图片描述
在这里插入图片描述
在STM32CubeMX中进行引脚配置
由于所调用的LCD驱动代码中引脚名称已经确定,不好直接更改代码,所以在配置引脚时,要将对应的引脚重命名
在这里插入图片描述
在对应引脚上右键改名,改名后👇
在这里插入图片描述
因为屏幕显示需要高的刷新率,需更改引脚输出速度为高速👇
在这里插入图片描述
在这里插入图片描述
按键设置为外部中断,配置按键为外部中断👇
在这里插入图片描述
在这里插入图片描述
STM32CubeMX中进行引脚配置👇
在这里插入图片描述
将lcd驱动代码放入工程文件对应位置👇
在这里插入图片描述
在这里插入图片描述
在工程文件中添加屏幕驱动程序 lcd.c👇
在这里插入图片描述
添加完要编译一下,将其关联文件添加进来,编译完后👇
在这里插入图片描述
给图片添加一个背景,利用图片取模软件将一个图片进行取模转换,生成一个十六进制元素的二维数组
在这里插入图片描述
生成一个.h文件并放入项目文件中,对lcd.h和刚生成的文件进行引用👇
在这里插入图片描述
在这里插入图片描述
在keil中打开生成的图模文件,保存数组名,下面会用👇
在这里插入图片描述

调用屏幕驱动代码中所定义好的一些函数对屏幕初始化和图片的显示👇
在这里插入图片描述
给计时器添加一个标题和时间显示区域👇
在这里插入图片描述
显示效果如下👇
在这里插入图片描述
Gui_DrawFont_GBK16字符串显示函数的第三个参数为一个字符串首地址,那如何让显示的字符串能够动起来呢??这时我们可以想到一个函数sprintf,这个函数可以对一个字符串进行格式化改变,时间一改变,就可以接着改变字符串内容。
在这里插入图片描述
接下来写计时的程序,逻辑很好理解,时间每增加1秒,接着就将改变好的字符串输出到屏幕如下👇
在这里插入图片描述

3.2 中断处理

找到中断向量表,追找到外部中断的处理函数
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
追到了外部中断回调函数👇
在这里插入图片描述
进行重写回调函数,每次按键触发的外部中断会回调以下重写的回调函数👇
在这里插入图片描述
在该函数中要对时、分、秒变量进行清零,同时更新屏幕显示,若不重新写回屏幕(没有上面的地183行代码),则会出现下面情况,按下按键后不能清零,而是从第一秒1秒开始计时👇🤔🤔🤔
在这里插入图片描述
🔍原因是:程序大部分时间都处于延时状态,而你在按下按键时是处在延时状态,延时状态程序收到中断信号,保存现场,进行中断处理函数的执行,此时虽然时间变量都给清零了,但是没有立即写回屏幕显示时间,中断返回,恢复现场,主程序又回到延时状态,此时程序执行到了下面这里👇
在这里插入图片描述
这样,秒数就会加 1 变成1,下面再写回屏幕就会显示1了😄

改正之后就没有问题了😆😆😆👇

在这里插入图片描述

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

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

相关文章

用Qt写的机器视觉绘图工具

一个用QtGraphicsView写的机器视觉绘图工具,支持直线查找,圆拟合,卡尺工具,圆环查找等。底部GraphicsScene可以实时显示相机图像,工具获取图像后通过算法处理图像。 Project是基于Qt的例程项目qdraw改的。

任天堂开发全新独立VR设备,或为下一代主机?将提供混合现实体验

根据爆料人Nash Weedle在X平台上的发文,我们得知任天堂正在秘密开发一款全新的独立VR设备,该设备将拥有一块MicroLED屏幕,并且独立于任天堂传闻中的下一代主机。与此同时,谷歌也参与了这款VR产品的研发工作。 这一新的VR设备被设计…

微信怎么录屏聊天记录?这个方法请你收好

“微信怎么录屏聊天记录呀?和女朋友刚认识的时候,都是在微信上面聊天的,现在想把这些聊天记录都保存下来,觉得很有纪念意义,有人知道怎么录屏保存下来吗?” 微信作为一款广泛使用的社交工具,承…

三维模型OBJ格式轻量化的跨平台兼容性问题分析

三维模型OBJ格式轻量化的跨平台兼容性问题分析 三维模型的OBJ格式轻量化在跨平台兼容性方面具有重要意义,可以确保模型在不同平台和设备上的正确加载和渲染。本文将分析OBJ格式轻量化的跨平台兼容性技术,并探讨其在保证数据一致性、支持多种平台和工具以…

Briefings in Bioinformatics2021 | Bert-Protein+:基于Bert的抗菌肽识别

论文标题:A novel antibacterial peptide recognition algorithm based on BERT 论文地址:novel antibacterial peptide recognition algorithm based on BERT | Briefings in Bioinformatics | Oxford Academic 代码:https://github.com/B…

【BI看板】Superset时间过滤控件二次开发

有没有人发觉Superset时间过滤组件非常高级,😟但又有点复杂,没有选择时间区间的快捷方式。 Superset的时间过滤控件可以通过在代码中进行二次开发来进行定制。以下是一些可能有用的提示: 查找源代码:可以在Superset的源…

没有一颗美国芯片,还测试了6G技术,卫星手机代表中国再次领先

随着国产5G卫星手机的发布,关注中国手机的日本媒体已对这款手机进行拆解,拆解结果显示已没有一颗美国芯片,显示国产手机产业链取得了彻底的突破,从此即使美国不供应芯片,国产手机也能实现5G技术。 日本这几年对中国科技…

Codeforces Round 560 (Div 3)

Codeforces Round 560 (Div. 3) Dashboard - Codeforces Round 560 (Div. 3) - Codeforces A. Remainder&#xff08;模拟&#xff09; 思路&#xff1a;模拟取余操作 &#xff0c; 只需考虑数字的后 x 位变成要变成的数字即可。 #include<bits/stdc.h> using namespa…

java的一个catch语句捕获多个异常

说明 在java的异常处理中&#xff0c;如果几个异常的处理完全相同&#xff0c;那么可以考虑在一个catch语句中捕获。但要注意&#xff0c;用一个catch捕获的几个异常类中&#xff0c;一个类不能是另外一个的子类&#xff0c;否则会编译报错。因为如果有父子关系&#xff0c;那…

“Fatal error compiling: 无效的目标发行版: 11“的解决

"Fatal error compiling: 无效的目标发行版: 11"的解决 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project xxxxx: Fatal error compiling: 无效的目标发行版: 11 -> [Help 1] PS D:\…

第三方软件测试公司如何选择?2023国内软件测试机构排名

软件检测公司 随着互联网技术的快速发展&#xff0c;应用软件也如春笋般越来越多&#xff0c;软件测试成为了软件企业离不开的话题。但软件企业的精力大多投入在软件开发上&#xff0c;因此要想更好更高效的完成软件测试&#xff0c;企业一般会将软件测试交付给外包公司完成。…

基于改进人工蜂群算法的 K 均值聚类算法(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

ModaHub魔搭社区专访百度智能云李莅:什么样的企业适合什么类型的向量数据库?

ModaHub魔搭社区:向量数据库会像传统数据库一样面临着选型问题吗?您能介绍下,什么样的企业适合什么类型的向量数据库吗?是单机版的还是插件版的,还是企业级的? 李莅的观点非常明确,他认为在选型的时候,首先要考虑的是需求。如果业务量级不是特别大,而且有成本方面的考…

背书方法--记忆宫殿

项目进度管理的工具 记忆宫殿或场景法&#xff1a;果树抽水&#xff08;流程是&#xff1a;果树的果子&#xff0c;水池的水&#xff0c;抽水机的水&#xff09;&#xff1a;想象一下你家附近有个巨大的果树&#xff0c;人们为了保护它&#xff0c;修建了个池子&#xff0c;昨…

IDEA中的“Deployment“ 将项目直接部署到服务器上

ntelliJ IDEA中的"Deployment"工具栏是一个方便的工具&#xff0c;用于将你的项目直接部署到服务器上。这个工具栏提供了三种部署的方式&#xff1a; 1.Web Server在本地电脑上&#xff0c;并且服务器运行目录也在项目目录下。 2.Web Server在本地电脑上&#xff0c;…

JWT一篇通

JWT 是什么&#xff1f; JWT&#xff08;JSON Web Token&#xff09;是一种开放的标准&#xff0c;标准的编号是RFC7591。用于在不同实体之间安全地传输信息。它是基于 JSON 编码的令牌。 JWT 的组成 JWT由三个部分组成&#xff1a;头部&#xff08;Header&#xff09;、载荷…

从C++98到C++26,经历了什么?

作为一名程序员&#xff0c;2023年最应该关注的话题就是C的标准更新。 C标准遵循3年开发周期&#xff0c;并以发布年份命名。C在临发布的一年前会进入“功能冻结期&#xff08;feature freeze&#xff09;”&#xff0c;即版本开发进入半稳定状态&#xff0c;不再添加重大功能及…

【C语言】入门——指针

目录 ​编辑 1.指针是什么 2.指针类型和指针运算 2.1指针-整数 2.2指针-指针 2.3指针的关系运算 3.野指针 3.1野指针成因 &#x1f44d;指针未初始化&#xff1a; &#x1f44d;指针越界访问&#xff1a; &#x1f44d;指针指向空间释放&#xff1a; 3.2如何规避野指针 …

PDF转Word的方法分享与注意事项。

PDF和Word是两种常用的文档格式&#xff0c;它们各有优点&#xff0c;适用于不同的场景。然而&#xff0c;有时候我们需要将PDF转换为Word&#xff0c;以便更好地进行编辑和排版。本文将介绍几种常用的PDF转Word的方法&#xff0c;并分享一些注意事项。 一、PDF转Word的方法 使…

性能炸裂c++20协程+iocp/epoll,超轻量高性能异步库开发实战

前言&#xff1a; c20出来有一段时间了。其中一大功能就是终于支持协程了&#xff08;c作为行业大哥大级别的语言&#xff0c;居然到C20才开始支持协程&#xff0c;我也是无力吐槽了&#xff0c;让多少人等了多少年&#xff0c;等了多少青春&#xff09;但千呼万唤他终于还是来…