当前位置: 首页 > news >正文

STM32 GPIO输入检测——按键

前言

在嵌入式系统开发中,对GPIO输入进行检测是一项常见且关键的任务。STM32微控制器作为一款功能强大的处理器,具有丰富的GPIO功能,可以轻松实现对外部信号的检测和处理。在本文中,我们将深入探讨如何在STM32微控制器上进行GPIO输入检测,并介绍两种常见的方法:轮询检测和中断检测。

 STM32 GPIO输入检测

GPIO(General Purpose Input/Output)端口在嵌入式系统中扮演着重要的角色,它可以配置为输入模式用于读取外部信号的状态。在STM32微控制器中,我们可以通过配置GPIO端口为输入模式,实时监测外部信号的电平状态,以便根据不同的状态执行相应的操作。

 轮询检测方法

轮询检测是一种简单而直接的方法,通过不断地查询GPIO引脚的状态来实现输入检测。下面是一个示例代码,展示了如何在STM32上使用轮询检测的方式进行GPIO输入检测:

```c
#include "stm32f4xx.h" 

void GPIO_InputDetection(void) {
    GPIO_InitTypeDef GPIO_InitStruct;

    // 配置GPIO引脚为输入模式
    GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IN;
    GPIO_InitStruct.GPIO_Pin = GPIO_Pin_0;
    GPIO_InitStruct.GPIO_PuPd = GPIO_PuPd_NOPULL;
    GPIO_Init(GPIOA, &GPIO_InitStruct);

    while (1) {
        if (GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_0) == Bit_SET) {
            // 处理高电平状态
        } else {
            // 处理低电平状态
        }
    }
}
```

在上面的示例中,我们配置了GPIOA的引脚0为输入模式,并在一个无限循环中不断检测该引脚的状态。如果引脚检测到高电平(Bit_SET),则执行相应的操作;如果检测到低电平,则执行另一种操作。

 中断检测方法

除了轮询检测外,STM32还支持通过中断的方式进行GPIO输入检测。通过配置外部中断线,可以在引脚状态发生变化时立即执行相应的操作。以下是一个示例代码,演示了如何在STM32上使用中断检测的方式进行GPIO输入检测:

```c
#include "stm32f4xx.h"

void EXTI0_IRQHandler(void) {
    if (EXTI_GetITStatus(EXTI_Line0) != RESET) {
        // 执行引脚状态变化时的操作
        EXTI_ClearITPendingBit(EXTI_Line0);
    }
}

void GPIO_InterruptDetection(void) {
    // 配置GPIO引脚为输入模式
    // 配置外部中断线0
    // 配置中断优先级
}
```

结言

在中断检测方法中,我们配置了外部中断线0来检测引脚状态的变化,并在`EXTI0_IRQHandler`中断服务例程中执行相应的操作。

通过以上详细的讨论,我们深入探讨了在STM32微控制器上进行GPIO输入检测的两种常见方法:轮询检测和中断检测。这些方法可以帮助开发人员根据具体需求选择合适的方式来处理GPIO输入状态变化,从而实现更加灵活和高效的嵌入式系统设计。希望本文能带给您更深入的理解和启发。

相关文章:

STM32 GPIO输入检测——按键

前言 在嵌入式系统开发中,对GPIO输入进行检测是一项常见且关键的任务。STM32微控制器作为一款功能强大的处理器,具有丰富的GPIO功能,可以轻松实现对外部信号的检测和处理。在本文中,我们将深入探讨如何在STM32微控制器上进行GPIO…...

Rustdesk二次编译,新集成AI功能开源Gpt小程序为远程协助助力,全网首发

环境: Rustdesk1.1.9 sciter版 问题描述: Rustdesk二次编译,新集成AI功能开源Gpt小程序为远程协助助力,全网首发 解决方案: Rustdesk二次编译,新集成开源AI功能Gpt小程序,为远程协助助力&#xff0c…...

面试(03)————多线程和线程池

一、多线程 1、什么是线程?线程和进程的区别? 2、创建线程有几种方式 ? 3、Runnable 和 Callable 的区别? 4、如何启动一个新线程、调用 start 和 run 方法的区别? 5、线程有哪几种状态以及各种状态之间的转换? 6、线程…...

纯CSS实现未读消息显示99+

在大佬那看到这个小技巧&#xff0c;我觉得这个功能点还挺常用&#xff0c;所以给大家分享下具体的实现。当未读消息数小于100的时候显示准确数值&#xff0c;大于99的时候显示99。 1. 实现效果 2. 组件封装 <template><span class"col"><sup :styl…...

【C++】C++ primer plus 第十二章--类和动态内存分配

动态内存和类 关于静态数据成员 类之作声明&#xff0c;不分配内存&#xff0c;因此静态成员变量在类中不能进行初始化&#xff0c;需要在类外进行。特殊情况&#xff1a; 存在可以在类中声明静态成员并初始化的情况&#xff0c;成员类型为const整型或者const枚举类型。 特殊…...

分类预测 | Matlab实现GWO-LSSVM灰狼算法优化最小二乘支持向量机数据分类预测

分类预测 | Matlab实现GWO-LSSVM灰狼算法优化最小二乘支持向量机数据分类预测 目录 分类预测 | Matlab实现GWO-LSSVM灰狼算法优化最小二乘支持向量机数据分类预测分类效果基本介绍程序设计参考资料 分类效果 基本介绍 1.Matlab实现GWO-LSSVM灰狼算法优化最小二乘支持向量机数据…...

使用PHP进行极验验证码动态参数提取与逆向分析

在网络安全领域&#xff0c;逆向工程和验证码破解是常见的技术挑战之一。极验验证码作为一种常见的人机验证工具&#xff0c;其动态参数的提取和逆向分析对于验证码的破解至关重要。本文将介绍如何使用PHP语言进行极验验证码动态参数的提取与逆向分析。 1. 准备工作 在开始之前…...

43.1k star, 免费开源的 markdown 编辑器 MarkText

43.1k star, 免费开源的 markdown 编辑器 MarkText 分类 开源分享 项目名: MarkText -- 简单而优雅的开源 Markdown 编辑器 Github 开源地址&#xff1a; https://github.com/marktext/marktext 官网地址&#xff1a; MarkText 支持平台&#xff1a; Linux, macOS 以及 Win…...

ArcGIS Pro怎么进行挖填方计算

在工程实施之前&#xff0c;我们需要充分利用地形&#xff0c;结合实际因素&#xff0c;通过挖填方计算项目的标高&#xff0c;以达到合理控制成本的目的&#xff0c;这里为大家介绍一下ArcGIS Pro中挖填方计算的方法&#xff0c;希望能对你有所帮助。 数据来源 教程所使用的…...

POLY - Survival Melee Weapons

一个轻便、有趣且灵活的低多边形资源包,非常适合原型设计或添加到低多边形世界中。超过50种近战武器、刀、斧、棍棒、棍棒等。 此套餐非常适合第三人称或自上而下的观看。 除此之外,资产还包括开发生存游戏可能需要的任何细节。 整个包是以多边形风格创建的,可以与其他多边…...

【ARMv7-M】| 01——阅读笔记 | 简介|应用程序级编程和内存模型

系列文章目录 【ARMv7-M】| 01——阅读笔记 | 简介|应用程序级编程和内存模型 失败了也挺可爱&#xff0c;成功了就超帅。 文章目录 前言1、简介2、应用程序级编程模型2.1 编程模式和访问等级2.2 数据类型和运算操作2.3 寄存器和执行状态1.2.4 异常和中断1.2.5 浮点单元寄存器…...

用Python做一个4399游戏脚本原来这么简单 !(内含完整思路)

说明 简述&#xff1a;本文将以4399小游戏《宠物连连看经典版2》作为测试案例&#xff0c;通过识别小图标&#xff0c;模拟鼠标点击&#xff0c;快速完成配对。对于有兴趣学习游戏脚本的同学有一定的帮助。 运行环境&#xff1a;Win10/Python3.5。 主要模块&#xff1a;win3…...

【计算机网络】应用层——HTTPS协议详解

文章目录 1. HTTPS 协议简介2. 了解“加密”3. HTTPS 保证数据安全传输的三大机制3.1 引入对称加密3.2 引入非对称加密3.3 引入“SSL/TLS证书”&#xff08;防止中间人攻击&#xff09;3.4 HTTPS安全机制总结 &#x1f4c4;前言&#xff1a; 前面的文章已经对 HTTP 协议 进行了…...

私家侦探如何追踪难以找到的人?

私家侦探如何追踪难以找到的人&#xff1f; 私家侦探经常受雇于无从下手的情况&#xff0c;要在稀缺的信息中寻找蛛丝马迹&#xff0c;追踪那些难以捉摸的目标。在众多情境中&#xff0c;私家侦探或许能挖掘出丰富的信息。然而&#xff0c;若目标人物决心隐匿行踪&#xff0c;逃…...

一文讲透亚马逊云命令行使用

从配置开始 学习使用亚马逊云&#xff0c;自然免不了使用命令行工具&#xff0c;首先我们从下载和配置开始&#xff1a; 现在都使用V2版本的命令行工具&#xff0c;可以从官网下载最新的二进制安装包。1 首先是配置凭证&#xff1a; aws configure 输入之后会提示输入AK/SK…...

感染了后缀为.jayy勒索病毒如何应对?数据能够恢复吗?

导言&#xff1a; 在当今数字化的世界中&#xff0c;网络安全已经成为了每个人都需要关注的重要议题。而勒索病毒作为网络安全领域中的一大威胁&#xff0c;不断地演变和升级&#xff0c;给个人和组织带来了严重的损失和困扰。近期&#xff0c;一种名为.jayy的勒索病毒引起了广…...

一键快速彻底卸载:Mac软件轻松删除,瞬间释放磁盘空间

在接手使用前任员工遗留的Mac电脑时&#xff0c;经常面临的一个问题是内置了大量的非必要软件&#xff0c;这些软件不仅侵占了硬盘资源&#xff0c;还可能影响电脑整体性能。因此&#xff0c;迅速有效地删除这些冗余软件&#xff0c;以达成设备清爽、高效的初始化状态极其重要。…...

(React Hooks)前端八股文修炼Day9

一 对 React Hook 的理解&#xff0c;它的实现原理是什么 React Hooks是React 16.8版本中引入的一个特性&#xff0c;它允许你在不编写类组件的情况下&#xff0c;使用state以及其他的React特性。Hooks的出现主要是为了解决类组件的一些问题&#xff0c;如复杂组件难以理解、难…...

工厂方法模式:灵活的创建对象实例

在软件开发中&#xff0c;我们经常需要创建对象&#xff0c;但直接new一个实例可能会导致代码的耦合性增加&#xff0c;降低了代码的灵活性和可维护性。工厂方法模式&#xff08;Factory Method Pattern&#xff09;是一种创建型设计模式&#xff0c;它提供了一种创建对象的接口…...

vue-codeirror编辑器vue3中的使用

vue-codeirror编辑器vue3中的使用 <script lang"ts" setup> import { ref,reactive } from vue; import { Codemirror } from "vue-codemirror"; import { oneDark } from "codemirror/theme-one-dark"; import { json } from codemirror/…...

网络编程(Modbus进阶)

思维导图 Modbus RTU&#xff08;先学一点理论&#xff09; 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议&#xff0c;由 Modicon 公司&#xff08;现施耐德电气&#xff09;于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…...

循环冗余码校验CRC码 算法步骤+详细实例计算

通信过程&#xff1a;&#xff08;白话解释&#xff09; 我们将原始待发送的消息称为 M M M&#xff0c;依据发送接收消息双方约定的生成多项式 G ( x ) G(x) G(x)&#xff08;意思就是 G &#xff08; x ) G&#xff08;x) G&#xff08;x) 是已知的&#xff09;&#xff0…...

Docker 运行 Kafka 带 SASL 认证教程

Docker 运行 Kafka 带 SASL 认证教程 Docker 运行 Kafka 带 SASL 认证教程一、说明二、环境准备三、编写 Docker Compose 和 jaas文件docker-compose.yml代码说明&#xff1a;server_jaas.conf 四、启动服务五、验证服务六、连接kafka服务七、总结 Docker 运行 Kafka 带 SASL 认…...

理解 MCP 工作流:使用 Ollama 和 LangChain 构建本地 MCP 客户端

&#x1f31f; 什么是 MCP&#xff1f; 模型控制协议 (MCP) 是一种创新的协议&#xff0c;旨在无缝连接 AI 模型与应用程序。 MCP 是一个开源协议&#xff0c;它标准化了我们的 LLM 应用程序连接所需工具和数据源并与之协作的方式。 可以把它想象成你的 AI 模型 和想要使用它…...

Mobile ALOHA全身模仿学习

一、题目 Mobile ALOHA&#xff1a;通过低成本全身远程操作学习双手移动操作 传统模仿学习&#xff08;Imitation Learning&#xff09;缺点&#xff1a;聚焦与桌面操作&#xff0c;缺乏通用任务所需的移动性和灵活性 本论文优点&#xff1a;&#xff08;1&#xff09;在ALOHA…...

Linux C语言网络编程详细入门教程:如何一步步实现TCP服务端与客户端通信

文章目录 Linux C语言网络编程详细入门教程&#xff1a;如何一步步实现TCP服务端与客户端通信前言一、网络通信基础概念二、服务端与客户端的完整流程图解三、每一步的详细讲解和代码示例1. 创建Socket&#xff08;服务端和客户端都要&#xff09;2. 绑定本地地址和端口&#x…...

【分享】推荐一些办公小工具

1、PDF 在线转换 https://smallpdf.com/cn/pdf-tools 推荐理由&#xff1a;大部分的转换软件需要收费&#xff0c;要么功能不齐全&#xff0c;而开会员又用不了几次浪费钱&#xff0c;借用别人的又不安全。 这个网站它不需要登录或下载安装。而且提供的免费功能就能满足日常…...

HTML前端开发:JavaScript 获取元素方法详解

作为前端开发者&#xff0c;高效获取 DOM 元素是必备技能。以下是 JS 中核心的获取元素方法&#xff0c;分为两大系列&#xff1a; 一、getElementBy... 系列 传统方法&#xff0c;直接通过 DOM 接口访问&#xff0c;返回动态集合&#xff08;元素变化会实时更新&#xff09;。…...

Xela矩阵三轴触觉传感器的工作原理解析与应用场景

Xela矩阵三轴触觉传感器通过先进技术模拟人类触觉感知&#xff0c;帮助设备实现精确的力测量与位移监测。其核心功能基于磁性三维力测量与空间位移测量&#xff0c;能够捕捉多维触觉信息。该传感器的设计不仅提升了触觉感知的精度&#xff0c;还为机器人、医疗设备和制造业的智…...

消防一体化安全管控平台:构建消防“一张图”和APP统一管理

在城市的某个角落&#xff0c;一场突如其来的火灾打破了平静。熊熊烈火迅速蔓延&#xff0c;滚滚浓烟弥漫开来&#xff0c;周围群众的生命财产安全受到严重威胁。就在这千钧一发之际&#xff0c;消防救援队伍迅速行动&#xff0c;而豪越科技消防一体化安全管控平台构建的消防“…...