ARM体系结构和接口技术(六)KEY按键实验① 按键轮询检测

文章目录

  • 一、按键轮询
    • (一)分析按键的电路连接
      • 1. 按键原理图
      • 2. 按键消抖
  • 二、分析芯片手册
    • (一) GPIO章节
    • (二)RCC章节
  • 三、代码
    • (一)key.c
    • (二)key.h

一、按键轮询

(一)分析按键的电路连接

KEY1----PF9

1. 按键原理图

在这里插入图片描述
原理图可知,左侧有一个上拉电阻,当按键抬起时,key1处悬空,电压为3.3V;
当按键按下时,电路导通,key1处电压为0。
因此检测到低电平时,说明按键按下;高电平,说明按键抬起状态。

2. 按键消抖

机械按键本身就存在抖动,因此需要进行滤波处理

硬件滤波:滤波电容,用于硬件滤波,电容会充电放电,使key1处的电压变化不会过快
软件消抖:延时消抖,当检测到按键按下时,延时一段时间,再次检测按键的状态

二、分析芯片手册

(一) GPIO章节

(二)RCC章节

三、代码

(一)key.c

#include "../include/key.h"
extern void delay_ms(unsigned int ms);void key_init(void){//使能时钟__HAL_RCC_GPIOF_CLOCK_ENABLE();//配置按键gpio_init_t gpioInit;gpioInit.pin=KEY1_PIN;gpioInit.Moder_init=GPIO_INPUT_MODE;gpioInit.Pupdr_init=GPIO_NO_PUPD;gpio_init(GPIOF,&gpioInit);
}key_state_t key1_pull(void){if(gpio_read_pin(GPIOF,KEY1_PIN)==GPIO_PIN_RESET){//低电平说明按键按下delay_ms(10);//延时消抖if(gpio_read_pin(GPIOF,KEY1_PIN)==GPIO_PIN_RESET){while(gpio_read_pin(GPIOF,KEY1_PIN)==GPIO_PIN_RESET);//等待按键松开return KEY_DOWN;}}return KEY_UP;
}

(二)key.h

#ifndef __KEY_H__
#define __KEY_H__
#include "../include/gpio.h"
#include "../include/rcc.h"
/**** KEY1---PF9* KEY2---PF7* KEY3---PF8***/
#define KEY1_PIN PIN_9
#define KEY2_PIN PIN_7
#define KEY3_PIN PIN_8typedef enum{KEY_DOWN=0, //按键按下为低电平KEY_UP   //按键抬起为高电平
}key_state_t;void key_init(void);key_state_t key1_pull(void);#endif

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

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

相关文章

lua 游戏架构 之 LoaderWallet 异步加载

定义了一个名为LoaderWallet class,用于管理资源加载器(Loader)。这个类封装了资源加载的功能,包括异步加载,以及资源的释放和状态查询。下面是对代码的详细解释: ### 类定义和初始化 这里定义了一个名为…

QT CNA上位机报错 解决方案

QT编译报错: -lControlCAN 解决方案 更换三个文件,即可解决(QT 自带的是32位库,应使用64位库文件)

【Vue】快速入门:构建你的第一个Vue 3应用

文章目录 一、Vue简介二、环境搭建1. 安装Node.js和npm2. 安装Vue CLI 三、创建Vue项目四、项目结构介绍五、组件基础创建一个组件使用组件 六、模板语法插值指令v-bindv-ifv-for 七、事件处理八、状态管理安装Vuex创建Store使用Store 九、路由基础安装Vue Router配置路由使用路…

PiT : 基于池化层Pooling layer的Vision Transformer

CNN的降维原理;随着深度的增加,传统CNN的通道维数增加,空间维数减少。经验表明,这样的空间降维对变压器结构也是有益的,并在原有的ViT模型的基础上提出了一种新的基于池的视觉变压器(PiT)。 1. 引言 ViT与卷积神经网络(CNN)有很大的不同。将输入图像分成1616小块馈送到变压…

力扣刷题之2959.关闭分部的可行集合数目

题干描述 一个公司在全国有 n 个分部,它们之间有的有道路连接。一开始,所有分部通过这些道路两两之间互相可以到达。 公司意识到在分部之间旅行花费了太多时间,所以它们决定关闭一些分部(也可能不关闭任何分部)&…

mysql group_concat()函数、行转列函数

文章目录 一、group_concat函数1.1、语法1.2、示例1.2.1、查询所有姓名,并显示在一行1.2.2、单列合并,指定冒号分隔符1.2.3、单列合并,去重1.2.4、多列拼接合并1.2.5、多列拼接合并,列和列之间指定分隔符 在mysql的关联查询或子查…

周报0708-0715(run代码)

本周围绕代码展开学习,学习了组内的FWI代码,主要收获是熟练了创建环境、匹配解释器、安装必要包的流程,以及搜索时的小Tips:比如需要的包whl(表示该包的编译版本)。遇到的问题仍然不少 三个主要问题&#…

「实战应用」如何用图表控件LightningChart JS创建树状图应用?

LightningChart JS是Web上性能特高的图表库,具有出色的执行性能 - 使用高数据速率同时监控数十个数据源。 GPU加速和WebGL渲染确保您的设备的图形处理器得到有效利用,从而实现高刷新率和流畅的动画,常用于贸易,工程,航…

Go语言并发编程-同步和锁

同步和锁 概述 同步是并发编程的基本要素之一,我们通过channel可以完成多个goroutine间数据和信号的同步。 除了channel外,我们还可以使用go的官方同步包sync,sync/atomic 完成一些基础的同步功能。主要包含同步数据、锁、原子操作等。 一…

P3-AI产品经理-九五小庞

AI产品的数据流向 美团外卖,实时只能调度 美团28分钟送达需求的分析 AI产品常用的算法 常用算法 常见的AI算法解析 自然语言生成NLG语音识别:科大讯飞,通义千问 虚拟现实机器学习平台 决策管理系统生物特征识别技术 RPA(机器人流程自动…

ICE-BA原理

文章目录 主要思想约束建立IMU&Local & globalBAIMU预积分LocalBAGlobalBA求解方法常用的求解思路改进增量BA方法 论文: 《ICE-BA: Incremental, Consistent and Efficient Bundle Adjustment for Visual-Inertial SLAM》 ICE-BA:增量、一致且高…

多商户SaaS版扫码点餐系统开源

基于前后端分离的 多商户 SaaS 版扫码点餐系统,支持后台点餐、多人同时在线点餐、购物车共享、餐桌状态实时监控,菜品管理、餐桌管理等众多功能。 源码下载:多商户 SaaS 版扫码点餐系统.zip 功能特色 手机扫码点餐功能:用户可…

如何评价2023年国际高校数学建模竞赛B题?

问题1:在三星堆发现的一个外圆直径为85厘米,内圆直径为40厘米(假设)的青铜车轮,青铜车轮有5条车轴(射线),5条内弧线本质是双曲线,顶点与内圆相切,内弧双曲线的…

植物病害分级调研

Web of Science搜索,关键字“plant disease severity recognition”,共407篇,限制2023年以后共71篇 2019、2020 《Disentangled Representation Learning for Leaf Diseases Recognition》 2019 IF:0.8 论文:Disen…

Xcode进行真机测试时总是断连,如何解决?

嗨。大家好,我是兰若姐姐。最近我在用真机进行app自动化测试的时候,经常会遇到xcode和手机断连,每次断连之后需要重新连接,每次断开都会出现以下截图的报错 当这种情况出现时,之前执行的用例就相当于白执行了&#xff…

爬虫瑞数5案例:某大学总医院

声明: 该文章为学习使用,严禁用于商业用途和非法用途,违者后果自负,由此产生的一切后果均与作者无关 一、瑞数简介 瑞数动态安全 Botgate(机器人防火墙)以“动态安全”技术为核心,通过动态封装、动态验证、动态混淆、动态令牌等技术对服务器网页底层代码持续动态变换,…

Go语言并发编程-Goroutine调度

goroutine 概念 在Go中,每个并发执行的单元称为goroutine。通常称为Go协程。 go 关键字启动goroutine go中使用关键字 go 即可启动新的goroutine。 示例代码: 两个函数分别输出奇数和偶数。采用常规调用顺序执行,和采用go并发调用&…

大模型学习笔记十一:视觉大模型

一、判别式模型和生成式模型 1)判别式模型Discriminative ①给某一个样本,判断属于某个类别的概率,擅长分类任务,计算量少。(学习策略函数Y f(X)或者条件概率P(YIX)) ②不能反映训练数据本身的特性 ③学习…

优思学院|直方图与条形图的具体区别

在六西格玛方法、质量管理工具中,数据的分析和可视化是关键步骤。直方图和条形图是两种常用的图表工具,但它们在用途和显示方式上有显著区别。本文将详细探讨这两种图表的定义、特性、应用及如何选择适合的图表。 1. 直方图和条形图的定义 直方图是一种…

人工智能未来发展前景将会怎样?

当我们探讨人工智能未来的发展前景时,可以从多个角度来详细说明其可能的影响和趋势: 技术进步与应用扩展 1.深度学习与机器学习: 进一步优化和算法进展:深度学习已经取得了巨大成就,但仍面临挑战,如对小数…