STM32学习笔记(五) —— 按键翻转LED

前面我们分析过GPIO的各个寄存器,探讨了如何使用GPIO点亮LED,这里再验证一下GPIO的输入功能

1.硬件连接

在这里插入图片描述

我们在开发板上将按键连接到了PA0引脚,按键外接了上拉电阻,默认状态下PA0引脚处于高电平,当按键按下,PA0引脚就与GND短接,变为低电平,所以我们可以通过读取PA0引脚的电平状态来判断按键是否被按下

2.软件编程

这里使用STM32CubeMX来配置PA0引脚的初始化:

PA0配置为输入模式

在这里插入图片描述

生成代码后,可以看见程序中已经添加了PA0引脚初始化部分

PA0初始化

在while循环中添加如下代码:
注意按键要进行软件消抖(按键按下与断开时都会有干扰产生,可以进行软件延时消抖,一般可以延时10-20ms,具体可以参考代码中的注释)。

  while (1){    /* 读取PA0引脚电平 */if(HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_0) == GPIO_PIN_RESET) {/* 如果是低电平, 表示有按键按下, 进行软件延时消抖 */HAL_Delay(10);/* 再次读取PA0引脚电平, 如果还是低电平, 就认为有按键按下 */if(HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_0) == GPIO_PIN_RESET) {/* 等待按键释放 */while(HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_0) == GPIO_PIN_RESET);/* 翻转一次按键标志 */ek_key_flag = !ek_key_flag;printf("key pressed.\r\n");}}/* 按键每次按下后, ek_key_flag会在0与1之间变换 */if(ek_key_flag)/* 当ek_key_flag == 1时点亮LED */HAL_GPIO_WritePin(LED_GPIO_Port, LED_Pin, GPIO_PIN_RESET);else/* 当ek_key_flag不为1时熄灭LED */HAL_GPIO_WritePin(LED_GPIO_Port, LED_Pin, GPIO_PIN_SET);/* USER CODE END WHILE *//* USER CODE BEGIN 3 */}

将程序下载后可以打开串口调试助手,每当按键按下会打印“key pressed.”信息,并且LED会在亮灭之间翻转

keypressed

本例程代码可以在HAL库工程模板这一章节的最后,百度网盘链接分享处获取

以上是通过开发板进行实际验证的,下面使用软件仿真,

我们首先进入调试界面( 前面章节有提到,所以本篇以及后续章节都不再重复提及 ),
将控制LED的引脚添加进逻辑分析仪( 前面章节有提到如何添加 )

在这里插入图片描述

打开GPIOA窗口

在这里插入图片描述

确定要操作的连接按键的引脚PA0

在这里插入图片描述

运行仿真,点击PA0引脚后可以看到LED引脚变为了低电平

在这里插入图片描述

打开串口调试界面( 前面章节有提到如何添加 ),也可以看到打印的“key pressed.”信息

在这里插入图片描述

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

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

相关文章

2023_12蓝桥杯STEMA 考试 Scratch 中级试卷解析

2023蓝桥杯STEMA 考试 Scratch 中级试卷(12 月)解析 由于没有原始文件,这里使用的角色和背景和实际题目会有所差异,已经尽量还原原题,以下代码仅供参考。吐槽一句:蓝桥杯越来越变态了!\(`Δ’)/\(`Δ’)/\(`Δ’)/孩子学习速度永远也赶不上内卷的速度。 一、选择…

过好“苏州年”!沉浸式名城非遗文化体验展 2月10日正式启幕

擦亮非遗文化底色,绘就历史文化名城金名片 天工开画卷,苏作见匠心,在2024龙年到来之际,“匠海拾遗-沉浸式名城非遗文化体验展” 将于2月10日在江苏省省级文物保护单位——江苏按察使署旧址内举办。此次非物质文化遗产(…

【无刷电机】无感方波驱动方案

无感方波驱动方案 1.通过无感过零信号构造霍尔换相信号2.无刷硬件驱动方案3.无感方波控制程序框架3.1有感方波控制3.2无感方波控制3.3无感启动方案3.4无感速度闭环控制1.通过无感过零信号构造霍尔换相信号 实现无感方波控制有软件比较和硬件比较两种方案。 软件比较是通过ADC采…

基于Python的深度学习的身份证识别考勤系统,附源码

博主介绍:✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇…

vulhub中Apereo CAS 4.1 反序列化命令执行漏洞

Apereo CAS是一款Apereo发布的集中认证服务平台,常被用于企业内部单点登录系统。其4.1.7版本之前存在一处默认密钥的问题,利用这个默认密钥我们可以构造恶意信息触发目标反序列化漏洞,进而执行任意命令。 1.漏洞原理实际上是Webflow中使用了默…

红队渗透靶机:LORD OF THE ROOT: 1.0.1

目录 信息收集 1、arp 2、nmap 3、knock 4、nikto 目录探测 1、gobuster 2、dirsearch WEB sqlmap 爆库 爆表 爆列 爆字段 hydra爆破 ssh登录 提权 信息收集 内核提权 信息收集 1、arp ┌──(root㉿ru)-[~/kali] └─# arp-scan -l Interface: eth0, ty…

数据分析:当当网书籍数据可视化分析

当当网书籍数据可视化分析 作者:i阿极 作者简介:Python领域新星作者、多项比赛获奖者:博主个人首页 😊😊😊如果觉得文章不错或能帮助到你学习,可以点赞👍收藏📁评论&…

AVL树

文章目录 AVL树平衡因子 AVL树结点的定义AVL树类和函数接口AVL树插入元素最小不平衡子树旋转 AVL树的验证参考源码 AVL树是对普通二叉搜索树的一种优化。当二叉搜索树插入的元素是有序的时候或者接近有序的时候,二叉搜索树的性能会大大降低。二叉搜索树可能会变成一…

小白水平理解面试经典题目LeetCode 21. Merge Two Sorted Lists【Linked List类】

21. 将两个有序列表融合 Linked List 数据结构也在面试中经常出现,作为很好处理客户信息存储的结构很方便,也是重点必会项目之一,看看我们如何教懂白月光,成功邀约看电影吧。 小白渣翻译 你将获得两个排序链表 list1 和 list2 …

Linux 查看系统信息 + 服务信息命令(简记)

概述 作用:Linux 运维工作中常用的命令速查 小步教程 (xiaobuteach.com) Linux 命令大全 | 菜鸟教程 (runoob.com) 文本编辑器vim 本章大纲 | 小步教程 vim 多文件编辑 | 小步教程 常用 ps 查看服务启动命令 Linux ps 命令 | 菜鸟教程 (runoob.com) # 查找…

队列---数据结构

定义 队列(Queue)简称队,也是一种操作受限的线性表,只允许在表的一端进行插入,而在表的另一端进行删除。向队列中插入元素称为入队或进队;删除元素称为出队或离队。 队头(Front)&a…

华为机考入门python3--(5)牛客5-进制转换

分类:数字 知识点: 十六进制转int num int(hex_num, 16) int转十六进制 hex_num hex(num) 题目来自【牛客】 hex_num input().strip() dec_num int(hex_num, 16) print(dec_num) by 软件工程小施同学