STM32屏幕计时器

这篇具有很好参考价值的文章主要介绍了STM32屏幕计时器。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、最终效果

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

二、实现思想

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

三、实现过程

3.1 屏幕显示

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

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

3.2 中断处理

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

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

STM32屏幕计时器,# 走进STM32,stm32,嵌入式硬件,单片机,c语言文章来源地址https://www.toymoban.com/news/detail-696624.html

到了这里,关于STM32屏幕计时器的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【蓝桥杯嵌入式】蓝桥杯嵌入式第十二届省赛题,考点:模拟电压,串口通信,计时器

     🎊【蓝桥杯嵌入式】专题正在持续更新中,原理图解析✨,各模块分析✨以及历年真题讲解✨都在这儿哦,欢迎大家前往订阅本专题,获取更多详细信息哦🎏 🎏【蓝桥杯嵌入式】蓝桥杯第十届省赛真题 🎏【蓝桥杯嵌入式】蓝桥杯第十二届省赛程序真题 🎏【蓝桥杯嵌入式

    2023年04月09日
    浏览(43)
  • STM32的定时器详解(嵌入式学习)

    想要了解STM32的时钟系统 点击这里跳转——》STM32的时钟系统(嵌入式学习) 建议先看看时钟树如何配置 点击这里跳转——》STM32的时钟树配置(嵌入式学习) 跳转——》STM32的时钟基础详解(嵌入式学习) 跳跳转——》STM32的时钟源详解(嵌入式学习) SysTick又称滴答定时

    2024年02月13日
    浏览(50)
  • 14、计时器、定时器设计与应用

    掌握同步四位二进制计数器 74LS161 的工作原理和设计方法 掌握时钟/定时器的工作原理与设计方法 任务 1:采用行为描述设计同步四位二进制计数器 74LS161 任务 2:基于 74LS161 设计时钟应用 1.创建工程并创建 Verilog 文件 建立 HDL 类型的工程 My74LS161,创建 Verilog 文件 My74LS161,

    2024年02月03日
    浏览(41)
  • 51单片机通过计时器实现倒计时

    软件 : Keil5+Proteus7 元件 : AT89C51 * 1,7SEG-MPX2-CA * 1

    2024年02月16日
    浏览(49)
  • Qt实现计时器

    一、样图 二、代码 mainwidow.h mainwindow.cpp main.cpp ui_mainwindow.h

    2024年02月07日
    浏览(30)
  • RIP四大计时器

    RIP 计时器(以下均以华为 ensp 中信息为参考) 希望有需要的小伙伴可以参考参考,如有误解、请指正! 一、实验原理 1. 更新计时器( Update Timer ) Update time(更新时间):指运行RIP协议的路由器向其连接口广播自己的路由信息的时间间隔(用于更新RIP路由表信息),控制

    2024年02月03日
    浏览(33)
  • 24秒计时器

    方案一:采用计数器(74LS192)作为核心部分。同时选择(74LS47)作为BCD码译码器来对7段数码显示管进行译码驱动,两个七段共阳数码显示管进行显示。采用计时器(NE555)制成的多谐振荡器,进行秒脉冲的输入。因为我们需要对其进行暂停、清零、报警和自动清零等控制,所

    2024年02月06日
    浏览(35)
  • 555计时器原理

    以Multisim上的555计时器为例: 图0.0 555计时器包含八个引脚 分别为: RST - Reset 复位引脚(低电平有效) DIS - Discharge 三极管集电极Collector输入引脚 THR - Threshold 上阈值电压引脚 TRI - Trigger 触发引脚 CON - Control voltage 1 电压控制引脚 OUT - Output 信号输出引脚 VCC GND 555定时器内部功能图

    2024年02月05日
    浏览(35)
  • java计时器

      在 Java中,我们有一个重要的概念:同步和异步。同步就是 Java中的线程安全,异步就是 Java中的线程非安全。 在使用 JVM时,我们一般都是用 start ()方法启动一个线程,然后设置时间,比如定时器,定时器是在某个指定的时间执行相应的任务。但是,在实际应用中,我们

    2023年04月18日
    浏览(48)
  • WPF计时器功能

    本文实现WPF的计时器功能是通过system.timers.timer这个组件实现的。现在网上相关的资料有很多,我只是在自己的工作中刚好遇到要实现这个功能,中间也走了很多的弯路,不停的参考网上现有的资源,终于实现了基本的定时功能。希望本文可以帮助到您,让您花更少的时间来完

    2024年02月05日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包