基于HAL库的按钮实验

实验目的

  1. 掌握STM32 HAL库的GPIO输入配置方法。

  2. 实现通过按钮控制LED亮灭(支持轮询和中断两种模式)。

  3. 熟悉STM32CubeMX的外部中断(EXTI)配置流程。


实验硬件

  • 开发板:STM32系列开发板(如STM32F103C8T6、Nucleo-F411RE等)

  • LED模块:板载LED或外接LED(需串联220Ω限流电阻)

  • 按钮模块:板载按钮或外接机械按钮(需串联10kΩ上拉/下拉电阻)

  • 调试工具:ST-Link调试器(或板载调试器)


实验软件

  • STM32CubeMX

  • Keil MDK-ARM / STM32CubeIDE

  • STM32 HAL库


实验步骤


电路图

上拉电阻接法,当开关没有按下,引角浮空,默认提供高电压

当开关按下,线路接地,引脚为低电压


硬件接线


CubeMX配置

   1.创建新工程

  • 选择芯片型号(STM32F103C8T6)。

   2.配置系统时钟

  • SYS → Debug设为Serial Wire

    3.配置按钮引脚

  • 按钮引脚(如PA0)设为GPIO_Input,模式为Pull-up(上拉输入)。

   4.配置LED引脚

  • LED引脚(PC13)设为GPIO_Output(开漏)。

      5.生成代码

     6.代码实现

// 在main.c的while(1)循环中添加以下代码:
while (1) {if (HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_9) == GPIO_PIN_RESET) { // 按钮按下(低电平)HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_RESET);        // LED亮} else {HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_SET);      // LED灭}  
}

      7. 编译与下载

  • 编译工程:点击IDE的 Build 按钮。

  • 烧录程序:连接开发板,点击 Load 下载代码。


    8. 实验现象

  • 按下按钮时LED亮,松开时LED灭。


代码解析

  • HAL_GPIO_ReadPin()

HAL_GPIO_ReadPin 是STM32 HAL库中用于读取GPIO引脚输入电平状态的函数。通过调用此函数,可以获取指定GPIO引脚的当前电平值(高电平或低电平),常用于检测按键、传感器信号、通信协议(如I2C、SPI)的输入状态等场景。

GPIO_PinState HAL_GPIO_ReadPin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin);

参数说明

参数类型说明
GPIOxGPIO_TypeDef *GPIO端口(如GPIOAGPIOB等)。
GPIO_Pinuint16_t目标引脚编号(如GPIO_PIN_0),支持按位或组合

返回值

返回值类型说明
GPIO_PinState引脚电平状态:
GPIO_PIN_SET(高电平)
GPIO_PIN_RESET(低电平)。

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

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

相关文章

如何使用智能化RFID管控系统,对涉密物品进行安全有效的管理?

载体主要包括纸质文件、笔记本电脑、优盘、光盘、移动硬盘、打印机、复印机、录音设备等,载体(特别是涉密载体)是各保密、机要单位保证涉密信息安全、防止涉密信息泄露的重要信息载体。载体管控系统主要采用RFID射频识别及物联网技术&#xf…

Spring Cloud-Sentinel

Sentinel服务熔断与限流 Sentinel 是面向分布式、多语言异构化服务架构的流量治理组件,主要以流量为切入点,从流量控制、流量路由、熔断降级、系统自适应保护等多个维度来帮助用户保障微服务的稳定性。 官网地址:home | Sentinelhttps://sen…

土星云边缘计算微服务器 SE110S-WA32加持DeepSeek,本地部署企业私有推理大模型!

模型介绍 DeepSeek-R1-Distill-Qwen-7B是一款高性能的语言模型,基于DeepSeek-R1的推理能力,通过蒸馏技术将推理模式迁移到较小的Qwen模型上,在保持高性能的同时,显著降低了资源消耗,更适合在资源受限的环境中部署。 该…

React进阶之React核心源码解析(二)

React核心源码解析 diff单一节点比较diff多节点比较diff两轮遍历比较第一轮比较第二轮比较 Update 状态更新Concurrent Mode diff 一共两个阶段 render:内存中的更新,主要是通过递归的过程,来将react变化的部分,在内存中找到哪些…

安装WPS后,导致python调用Excel.Application异常,解决办法

在使用xlwings编辑excel文件时,默认调用的是“Excel.Application”,如果安装过wps,会导致该注册表为WPS,会导致xlwings执行异常 因为安装过WPS,导致与Excel不兼容的问题,想必大家都听说过。有些问题及时删…

FastExcel + Java:打造高效灵活的Excel数据导入导出解决方案

作者:后端小肥肠 🍇 我写过的文章中的相关代码放到了gitee,地址:xfc-fdw-cloud: 公共解决方案 🍊 有疑问可私信或评论区联系我。 🥑 创作不易未经允许严禁转载。 姊妹篇: 基于AOP的数据字典实现…

鸿蒙面试题

1.0penHarmony的系统架构是怎样的? 2.电话服务的框架? 3.OpenHarmony与HarmonyOS有啥区别?

基于 Filebeat 的日志收集

在现代分布式系统中,日志数据作为关键的监控与故障排查依据,越来越受到重视。本文将深入探讨 Filebeat 的技术原理、配置方法及在 ELK(Elasticsearch、Logstash、Kibana)生态系统中的应用,帮助开发者构建高效、稳定的日…

wireshark网络抓包

由于图片和格式解析问题,可前往 阅读原文 到这里已经讲了两个抓包工具的使用了,大家应该对抓包不是很陌生了。而wireshark相对于fiddler和charles更加偏向于网络层面的抓包或者说是一个网络封包分析工具。使用对象更适合于网络相关人员(网络管理员/相关运…

Jenkins 配置 Git Parameter 四

Jenkins 配置 Git Parameter 四 一、开启 项目参数设置 勾选 This project is parameterised 二、添加 Git Parameter 如果此处不显示 Git Parameter 说明 Jenkins 还没有安装 Git Parameter plugin 插件,请先安装插件 Jenkins 安装插件 三、设置基本参数 点击…

bitcoinjs学习1—P2PKH

1. 概述 在本学习笔记中,我们将深入探讨如何使用 bitcoinjs-lib 库构建和签名一个 P2PKH(Pay-to-PubKey-Hash) 比特币交易。P2PKH 是比特币网络中最常见和最基本的交易类型之一,理解其工作原理是掌握比特币交易构建的关键。 想要详…

2024年博客之星年度评选—创作影响力评审+主题文章创作评审目前排名(2024博客之星陪跑小分队助力2024博客之星创作者成长)

2024年博客之星年度评选—创作影响力评审主题文章创作评审目前排名 2024年博客之星主题文章创作评审文章得分公布!2024年博客之星创作影响力评审2024年博客之星主题文章创作评审目前排名公布! 【2024博客之星】恭喜完成✅主题创作的226位博主&#xff0…

机器学习-1:线性回归

常用的线性回归模型主要有以下这些 简单线性回归多元线性回归多项式回归岭回归套索回归弹性网络回归逐步回归 一.简单的一元线性回归 1.导入必备的库 #导入必备的库 import numpy as np import pandas as pd import matplotlib.pyplot as plt from sklearn.model_selection …

【DuodooBMS】给PDF附件加“受控”水印的完整Python实现

给PDF附件加“受控”水印的完整Python实现 功能需求 在实际工作中,许多文件需要添加水印以标识其状态,例如“受控”“机密”等。对于PDF文件,添加水印不仅可以增强文件的可识别性,还可以防止未经授权的使用。本代码的功能需求是…

java每日精进 2.13 Ganache(区块链本地私有化部署)

需求:使用区块链实现数据村存储,记录一些不可篡改的交互信息,网络环境为内外网均需要部署; 1.准备工作(软件安装) 1.1 安装 Node.js 和 npm 1.2 安装 Ganache 地址如下:windows有可视化界面 &a…

RAGFlow和Dify对比

‌ RAGFlow和Dify都是基于大语言模型(LLM)的应用开发平台,具有相似的功能和应用场景,但它们在技术架构、部署要求和用户体验上存在一些差异。‌‌ RAGFlow和Dify对比 2025-02-13 22.08 RAGFlow‌ ‌技术栈‌:RAGFlow…

day9手机创意软件

趣味类 in:记录趣味生活(通用) 魔漫相机:真人变漫画(通用) 活照片:让照片活过来(通用) 画中画相机:与众不同的艺术 年龄检测仪:比一比谁更年轻&#xf…

Next.js 15【实用教程】2025最新版

官网 https://nextjs.org/docs/app/getting-started Next.js 简介 Next.js 由 Vercel 开发和维护,旨在解决单页应用(SPA)和多页应用(MPA)在性能和 SEO 上的不足。 核心特性 服务端渲染(SSR)--…

MySQL 联合索引的最左匹配原则

环境:MySQL 版本:8.0.27 执行计划基础知识 possible_keys:可能用到的索引 key:实际用到的索引 type: ref:当通过普通的二级索引列与常量进行等值匹配的方式 询某个表时const:当我们根据主键或者唯一得…

2025 西湖论剑wp

web Rank-l 打开题目环境: 发现一个输入框,看一下他是用上面语言写的 发现是python,很容易想到ssti 密码随便输,发现没有回显 但是输入其他字符会报错 确定为ssti注入 开始构造payload, {{(lipsum|attr(‘global…