最详细STM32,cubeMX 按键点亮 led

这篇文章将详细介绍 如何在 stm32103 板子上使用 按键 点亮一个LED.

文章目录

  • 前言
  • 一、如何控制按键?
      • 为什么按键要接上拉电阻或者下拉电阻呢?
  • 二、cubeMX配置工程
      • 自动生成代码解析
  • 三、读取引脚电平函数
  • 四、按键为什么要消抖
      • 如何消除消抖
  • 五、实现按键控制 LED
  • 总结


前言

  • 实验开发板:STM32F103C8T6。
  • 所需软件:keil5 , cubeMX 。
  • 实验目的:了解 按键 点亮 led 原理,cubeMX配置 等 。

一、如何控制按键?

在这里插入图片描述在这里插入图片描述
通过原理图可以知道 通过 PA0 控制按键。

按键的左边 有一个电源 VCC,我们需要在按键的左边接一个下拉电阻,这样按键在 松开时是低电平,按下时是高电平

为什么按键要接上拉电阻或者下拉电阻呢?

可以看到 下图,如果不接下拉电阻那么 当按键松开时,PA0 的引脚电平就是未知的。

当接下拉电阻后,按键按下高电平, 松开时低电平。这样就可以通过读取 PA0 的电平值来确定按键是否被按下。
在这里插入图片描述

注意:
不可以接上拉电阻。因为如果接了上拉电阻时,不管按键是否按下,松开,PA0 引脚处都是高电平。这样就无法通过 PA0 判断按键是否被按下。

二、cubeMX配置工程

  1. 首先创建工程。
    在这里插入图片描述

  2. 选择芯片,开始创建工程。
    在这里插入图片描述

  3. 设置 SYS 模块,选择串行线。
    在这里插入图片描述

  4. 选择晶体共振。
    在这里插入图片描述
    5.由于 控制 led的是 PB4 引脚, 将 PB4 引脚设置为 gpio 输出口。
    在这里插入图片描述
    将 控制按键的 PA0 设置为输入引脚。(用于读取电平)
    在这里插入图片描述

  5. 设置 PA0 为 下拉电阻。
    在这里插入图片描述

  6. 设置时钟频率。
    直接设置为 最大频率 72 ,然后双击 enter 即可。
    在这里插入图片描述

  7. 设置工程的名字,工具链选择 MDK。
    在这里插入图片描述

  8. 点击自动生成 .c / .h 文件。
    . 在这里插入图片描述

  9. 点击生成即可。
    这样就可以生成 keil 的工程文件。
    在这里插入图片描述

自动生成代码解析

在这里插入图片描述

三、读取引脚电平函数

返回按键当前的电平状态。

GPIO_PinState HAL_GPIO_ReadPin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin);

参数解释

  • GPIOx : 这是一个指向 GPIO_TypeDef 结构体的指针,指定了要控制的GPIO端口,例如GPIOA、GPIOB等。

  • GPIO_Pin : 这是一个16位的整数,指定要设置的特定引脚。可以使用宏定义来指定要控制的引脚,例如GPIO_PIN_0,GPIO_PIN_1,GPIO_PIN_2等。

  • GPIO_PinState :这是一个枚举类型 ,用于指定要写入的引脚状态。它有两个可能的值:GPIO_PIN_RESET和GPIO_PIN_SET,分别代表引脚输出低电平和高电平。

四、按键为什么要消抖

按键需要消抖是因为机械开关(按键)的物理性质会导致在按下或释放的瞬间,开关接点可能会因震动或弹簧的张力而迅速开合,导致电信号产生瞬时的多次跳变,这可能引起误操作或不稳定的信号输入。为了解决这个问题,需要进行按键消抖。
在这里插入图片描述

如何消除消抖

检测到按键按下或释放后,等待一段时间以确认状态的稳定性,使用延时函数。这段时间称为消抖延时。如果在消抖延时内没有触发新的状态变化,那么可以确定按键状态已经稳定。

五、实现按键控制 LED

if(HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_0))
{/* 延时,用于按键消抖 */HAL_Delay(10);		if(HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_0)){HAL_GPIO_WritePin(GPIOB,GPIO_PIN_4,GPIO_PIN_RESET);			// 点亮 LED}
}
else if(HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_0) == 0)
{/* 延时,用于按键消抖 */HAL_Delay(10);if(HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_0) == 0){HAL_GPIO_WritePin(GPIOB,GPIO_PIN_4,GPIO_PIN_SET);			// 熄灭 LED}
}

总结

下一篇文章继续为大家介绍 STM32 的相关知识。

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

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

相关文章

电子笔记真的好用吗?手机上适合记录学习笔记的工具

提及笔记,不少人都会和学习挂钩,的确学习过程中我们经常会遇到很多难题,而经常记录笔记可以有效地帮助大家记住很多知识,而且时常拿出笔记查看一下,可方便巩固过去学习的知识。 手机作为大家日常随身携带的工具&#…

idea 启动出现 Failed to create JVM JVM Path

错误 idea 启动出现如下图情况 Error launching IDEA If you already a 64-bit JDK installed, define a JAVA_HOME variable in Computer > System Properties> System Settings > Environment Vanables. Failed to create JVM. JVM Path: D:\Program Files\JetB…

[软考中级]软件设计师-uml

事物 uml中有4中事物,结构事物,行为事物,分组事物和注释事物 结构事物是uml模型中的名词,通常是模型的静态部分,描述概念或物理元素 行为事物是uml的动态部分,是模型中的动词,描述了跨越时间…

appium---如何判断原生页面和H5页面

目前app中存在越来越多的H5页面了,对于一些做app自动化的测试来说,要求也越来越高,自动化不仅仅要支持原生页面,也要可以H5中进行操作自动化, webview是什么 webview是属于android中的一个控件,也相当于一…

快手新版本sig3参数算法还原

Frida Native层主动调用 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81…

C++之委托构造函数实例(二百四十三)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 人生格言: 人生…

【每日一句】只出现一次的数

文章目录 Tag题目来源题目解读解题思路方法一:位运算 其他语言Cpython3 写在最后 Tag 【位运算-异或和】【数组】【2023-10-14】 题目来源 136. 只出现一次的数字 题目解读 给你一个数组,找出数组中只出现一次的元素。题目保证仅有一个元素出现一次&a…

[华为杯研究生创新赛 2023] 初赛 REV WP

前言 一年没打比赛了, 差一题进决赛, REV当时lin的第三个challenge没看出来是凯撒, 想得复杂了, 结果错失一次线下机会 >_< T4ee 动态调试, nop掉反调试代码 发现处理过程为 置换sub_412F20处理(这里看其他师傅的wp知道应该是rc4, 我是直接en逆的buf字符串中每一位和…

竞赛 深度学习+opencv+python实现昆虫识别 -图像识别 昆虫识别

文章目录 0 前言1 课题背景2 具体实现3 数据收集和处理3 卷积神经网络2.1卷积层2.2 池化层2.3 激活函数&#xff1a;2.4 全连接层2.5 使用tensorflow中keras模块实现卷积神经网络 4 MobileNetV2网络5 损失函数softmax 交叉熵5.1 softmax函数5.2 交叉熵损失函数 6 优化器SGD7 学…

【网安必读】CTF/AWD实战速胜指南《AWD特训营》

文章目录 前言&#x1f4ac;正文这本书好在哪❔这本书讲了什么❔文末送书 前言&#x1f4ac; 【文末送书】今天推荐一本网安领域优质书籍《AWD特训营》&#xff0c;本文将从其内容与优势出发&#xff0c;详细阐发其对于网安从业人员的重要性与益处。 正文 &#x1f52d;本书…

《论文阅读:Dataset Condensation with Distribution Matching》

点进去这篇文章的开源地址&#xff0c;才发现这篇文章和DC DSA居然是一个作者&#xff0c;数据浓缩写了三篇论文&#xff0c;第一篇梯度匹配&#xff0c;第二篇数据增强后梯度匹配&#xff0c;第三篇匹配数据分布。DC是匹配浓缩数据和原始数据训练一次后的梯度差&#xff0c;DS…

idea怎么设置作者信息(详细)

目录 一&#xff1a;在Java类的开头自动注释作者名字和日期等信息 二&#xff1a;给Java的方法注释作者名字和日期等信息 1. 不可修改的模板&#xff1a;Postfix Completion 2. 可修改的模板&#xff1a;Live Templates tips&#xff1a;首先给大家推荐两款好用的免费软件&…

一文就懂大语言模型Llama2 7B+中文alpace模型本地部署

大语言模型Llama2 7B中文alpace模型本地部署 VX关注晓理紫并回复llama获取推理模型 [晓理紫] 1、Llama模型 一个由facebook发布的生成式语言模型&#xff0c;具体可以到其官方了解。 为了大家更好理解&#xff0c;这里把目录结构显示下一如下图。 2、 下载Llama并配置环境 …

Openstack部署

搭建基础环境 #网络 #防火墙 #用户用 #解析 #同步时间 实验角色 OpenStack01OpenStack02OpenStack03192.168.1.101192.168.1.102192.168.1.103srv1srv2srv3 同步时间 [rootsrv1]# yum install chrony -y [rootsrv1]# vim /etc/chrony.conf # 修改第3行&#xff0c;将NT…

为Mkdocs网站添加评论系统(以giscus为例)

官方文档&#xff1a;Adding a comment system 这里我同样推荐giscus 利用 GitHub Discussions 实现的评论系统&#xff0c;让访客借助 GitHub 在你的网站上留下评论和反应吧&#xff01;本项目深受 utterances 的启发。 开源。&#x1f30f;无跟踪&#xff0c;无广告&#…

灾备建设中的网络传输

对于建设灾备系统&#xff0c;只要是网络可达即可进行数据备份保护。灾备中用的传输方式有很多种&#xff0c;比如网络传输&#xff0c;lan-free传输&#xff0c;网络加密传输等。 在这里给大家介绍下网络传输&#xff0c;灾备中的网络传输和平时大家熟知的是一样的。是指用一…

k8s使用

一、Kubernetes好处 ​ kubernetes&#xff0c;是一个全新的基于容器技术的分布式架构领先方案&#xff0c;是谷歌严格保密十几年的秘密武器----Borg系统的一个开源版本&#xff0c;于2014年9月发布第一个版本&#xff0c;2015年7月发布第一个正式版本。 ​ kubernetes的本质…

GIS小技术分享(一):python中json数据转geojson或者shp

1.环境需求 geopandspandasshapelyjsonpython3 2.输入数据&#xff08;path字段&#xff0c;线条&#xff09; [{"id": "586A685D568311B2A16F33FCD5055F7B","name": "普及江","path": "[[116.35178835446628,23.57…

贴片电容材质的区别与电容的主要作用

一、贴片电容材质NPO、COG、X7R、X5R、Y5V、Z5U区别 主要是介质材料不同&#xff0c;不同介质种类由于它的主要极化类型不一样&#xff0c;其对电场变化的响应速度和极化率也不一样。在相同的体积下的容量就不同&#xff0c;随之带来的电容器介质的损耗、容量的稳定性也就不同…

【OpenCv光流法进行运动目标检测】

opencv系列文章目录 文章目录 opencv系列文章目录前言一、光流法是什么&#xff1f;二、光流法实例1.C的2.C版本3.python版本 总结 前言 随着计算机视觉技术的迅猛发展&#xff0c;运动目标检测在图像处理领域中扮演着至关重要的角色。在现实世界中&#xff0c;我们常常需要追…