【【萌新的STM32学习20--按键输入实验】】

news2025/1/14 2:43:54

萌新的STM32学习20–按键输入实验

在了解完蜂鸣器的实验之后我们又进行一个小实验 又是正点原子没有上课讲解的实验
在这里插入图片描述
对于这种不平滑的情况我们更多的也会去选择方法进行消除抖动
软件消抖:方法很多,我们例程中使用最简单的延时消抖。检测到按键按下后,一般进行10ms 延时,用于跳过抖动的时间段,如果消抖效果不好可以调整这个 10ms 延时,因为不同类型的按键抖动时间可能有偏差。待延时过后再检测按键状态,如果没有按下,那我们就判断这是抖动或者干扰造成的;如果还是按下,那么我们就认为这是按键真的按下了。对按键释放的判断同理。
例程要求
通过开发板上的三个独立按键控制 LED 灯和蜂鸣器: KEY_UP 控制蜂鸣器翻转,KEY1控制 LED1 翻转,KEY0 控制 LED0/LED1 同时翻转。
这就需要用到了我们上面讲述的蜂鸣器和LED控制还有新加入按键的实现
在这里插入图片描述
这里可以按照我们之前的逻辑判别

这里我们在此处介绍几个新的函数
HAL_GPIO_ReadPin
读出管脚的作用
GPIO_PinState HAL_GPIO_ReadPin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin);
前面一部分指的是GPIO多少
后面一部分说的是管脚号用的是从0到15中的任何一个

我们在使用GPIO的时候 无论用到哪一个 用到一个就请你使能该方向的GPIO 可以是GPIOA 也可以是GPIOE 等等
__HAL_RCC_GPIOA_CLK_ENABLE();
__HAL_RCC_GPIOE_CLK_ENABLE();

流程图
在这里插入图片描述
对于代码部分的简单解析
由硬件设计小节,我们知道 KEY0、KEY1 和 KEY_UP 分别来连接到 PE4、PE3 和 PA0 上

在这里插入图片描述
在这里插入图片描述
我们接下来重点分析一下扫描函数的实现
在这里插入图片描述
其实就是说其他
表示KEY00 KEY10 是低电平有效
WK_UP==1是高电平有效
然后很多人对这个static 不明显 static其实是静态变量仅能初始一次
剩下的mode 当处于1 下面是 表示key_up 一直松开 随时随地接收数据的改变
而优先级问题是这么解释的
我wk_up 在最下面,程序的顺序执行 会使得最下面的优先级最高,你这么想 反正我要到最后才会传递数据,哪怕我前面已经修改了数据,但是到了最后我一再收束修改条件 ,不是还是算作WK_up 的功劳吗

下面是main.c

int main(void){ uint8_t key; HAL_Init(); /* 初始化 HAL 库 */ sys_stm32_clock_init(RCC_PLL_MUL9); /* 设置时钟
, 72Mhz */ delay_init(72); 
/* 延时初始化 */ led_init(); /* 初始化 LED */ beep_init(); /* 初始化蜂鸣器 */ key_init();
 /* 初始化按键 */ LED0(0);
 /* 先点亮 LED0 */  
while(1) { key = key_scan(0); /* 得到键值 */
 if (key) 
{ switch (key) 
{ case WKUP_PRES: /* 控制蜂鸣器 */ BEEP_TOGGLE(); /* BEEP 状态取反 */ 
break; case KEY1_PRES: /* 控制 LED1(GREEN)翻转 */ 
LED1_TOGGLE(); /* LED1 状态取反 */ 
break;
 case KEY0_PRES: 
/* 同时控制 LED0, LED1 翻转 */ LED0_TOGGLE();
 /* LED0 状态取反 */ LED1_TOGGLE();
 /* LED1 状态取反 */ break; } } 
else { delay_ms(10); } }}

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

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

相关文章

矿业配电柜监测,真的如此难以克服?

当今工业和商业领域中,电力作为生产和运营的基石,无可替代。在这个背景下,配电柜监控的重要性日益凸显。 配电柜作为电力系统的核心组成部分,其稳定运行直接关系到生产的连续性、安全性以及能源的高效利用。通过配电柜监控&#x…

小红书爆款种草笔记拆解:如何打造吸引眼球的内容!

小红书作为一个生活方式平台和消费决策入口,已成为众多年轻人所喜爱的种草圣地。在这里,用户可以通过分享美妆、穿搭、美食等各类生活方式,吸引大量的关注和点赞。然而,如何在小红书上打造一篇吸引眼球、引发用户种草的爆款笔记呢…

每日一题 823. 带因子的二叉树

每日一题 823. 带因子的二叉树 难度:中等 思路: 取乘积,那么两个叶子节点相乘一定会得到一个更大的数,所以先排序以父节点为根节点的数的数量 以右节点为根节点的数的数量 * 以左节点为根节点的数的数量初始化列表,…

vscode vue3自定义自动补全

敲代码多了,发现重发动作很多,于是还是定义自动补全代码吧——懒是第一生产力! 1,Ctrl Shift P打开快捷命令行:找到下面这个 2,然后找到ts: 里面给了demo照着写就行 // "Print to conso…

【Qt QAxObject】使用 QAxObject 高效任意读写 Excel 表

1. 用什么操作 Excel 表 Qt 的官网库中是不包含 Microsoft Excel 的操作库,关于对 Microsoft Excel 的操作库可选的有很多,包含基于 Windows 系统本身的 ActiveX、Qt Xlsx、xlsLib、LibXL、qtXLS、BasicExcel、Number Duck。 库.xls.xlsx读写平台Qt Xls…

访问学者择校容易犯哪些错误?

在选择访问学者的学校时,很多人容易犯一些错误,这些错误可能会影响他们的学术和个人发展。下面就让知识人网小编带大家一起来探讨一下,访问学者在选择学校时容易犯的一些错误。 首先,许多访问学者容易陷入排名偏见。他们可能会过于…

什么是数字化工厂呢?为何MES管理系统是工业4.0的核心

随着互联网时代的来临,线上业务逐渐成为企业发展的新趋势。越来越多的企业开始将业务拓展到线上,开展数字化工厂转型。那么,什么是数字化工厂呢?它有哪些特点呢? 数字化工厂,是指以数字化技术,包…

React 的七个值得推荐的动画库

今天,Web 应用程序用户界面有许多吸引用户的元素,为了满足这些需求,开发人员不得不寻找新的方法来实现带有动画和过渡的 UI,因此,开发了专门的库和工具来处理 Web 应用程序中的动画。在本文中,将讨论一些优…

Ansible学习笔记2

Ansible是Python开发的自动化运维工具,集合了众多运维工具(Puppet、cfengine、chef、func、fabric)的优点,实现了批量系统配置,批量程序部署、批量运行命令等功能。 特点: 1)部署简单&#xff…

Ceph入门到精通-LVS基础知识

LB集群: (Load Balancing)即负载均衡集群,其目的是为了提高访问的并发量及提升服务器的性能,其 实现方式分为硬件方式和软件方式。 硬件实现方式: 常用的有 F5公司的BIG-IP系列、A10公司的AX系列、Citrix公司的 NetScaler系列…

延迟队列的理解与使用

目录 一、场景引入 二、延迟队列的三种场景 1、TTL对队列进行延迟 2、创建通用延时消息对消息延迟 3、使用rabbitmq的延时队列插件 x-delayed-message使用 父pom文件 pom文件 配置文件 config 生产者 消费者 结果 一、场景引入 我们知道可以通过TTL来对队列进行设…

百数应用中心——生产制造管理解决方案解决行业难题

传统生产制造业面临着许多挑战,其中一些主要问题包括效率低下、交期压力大、需求预测不准确、生产模式复杂、异常响应慢、库存高和计划脱节等。这些问题不仅影响了生产效率和质量,也导致了不必要的成本和客户满意度下降。 生产制造管理应用对于企业的生产…

[已解决] wget命令出现Unable to establish SSL connection.错误

问题 从win11上下载best.ckpt包时 遇到: Unable to establish SSL connection.错误 解决方案: 加上参数: 加上跳过验证证书的参数--no-check-certificate 有些网站不允许通过非浏览器的方式进行下载,使用代理既可以解决问题&am…

MES管理系统中常用的数据模型有哪些

在MES管理系统项目中,数据建模对于生产过程的监控、分析和管理具有至关重要的作用。本文将介绍一些常见的MES管理系统数据建模方面,并阐述它们在生产过程中的重要性和应用。 1、产品数据模型是MES系统中的基础模块之一。它涵盖了产品的基本信息、规格和属…

JavaScript 中的箭头函数:如何使用简洁的语法

了解有关 JavaScript 箭头函数的所有信息。我们将向您展示如何使用 ES6 箭头语法,以及在代码中利用箭头函数时需要注意的一些常见错误。您将看到许多示例来说明它们的工作原理。 JavaScript 箭头函数随着 ECMAScript 2015(也称为 ES6)的发布…

【pyqt5界面化开发-4】垂直布局/水平布局+‘套娃‘布局

目录 一、垂直布局 二、布局器的组合 三、水平布局垂直布局(套娃) 一、垂直布局 需要模块:QVBoxLayout # 垂直布局layout QVBoxLayout()………………# 应用设置的布局器self.setLayout(layout) 模块间的伸缩器(可以理解为弹簧…

InfluxDB在Windows的下载,安装,自启动

1.官网下载 官网下载地址,我一般都喜欢官网下载,包含windows,linux,macos,docker,K8s甚至树莓派系统等。 2.启动 进入到文件夹下,双击启动exe的话会一闪而过,它告诉你要cmd用命令…

uni-app中使用iconfont彩色图标

uni-app中使用iconfont彩色图标 大家好,今天我们来学习一下uni-app中使用iconfont彩色图标,好好看,好好学,超详细的 第一步 首先,从iconfont官网(iconfont-阿里巴巴矢量图标库)选择自己需要的图…

九号公司董事长高禄峰:立足科技创新,助力行业发展

从整个电动两轮车发展时间线来看,尽管九号公司2019年才正式进入局电动两轮车市场,但公司凭借智能化入局,在短短三年时间里,已经成长为智能电动两轮车市场的领军者,在这期间,九号公司既没有多年的市场积累&a…

基于 OV5640 摄像头理论知识讲解-典型工作模式配置

基于OV2640/ OV5640 的图像采集显示系统系列文章目录: (1)基于 OV5640 摄像头理论知识讲解-成像和采样原理 (2)基于 OV5640 摄像头理论知识讲解-数字接口和控制接口 (3)基于 OV5640 摄像头理论知…