stm32 GPIO输入检测

以检测按键输入为例:
在这里插入图片描述
如图一共有三个按键,WK-UP按键被按下会被拉到高电平,其它两个被按下会被拉到低电平。下面例子中如果key0被按下那就让led0状态反转,如果是key1被按下那就让led1状态反转,如果是wk-up被按下那就让蜂鸣器状态反转。

首先要说明的是按键有两种模式,一种就像是快进键,持续被按下就持续快进,就像是可重复触发的单稳态触发器,另外一种就是像关机一样的键,就算被持续按下也只是被判定为一次触发,就像是不可重复触发的单稳态触发器。在程序中用key_mode这个参数配置模式。

读取IO输入的库函数是:
uint8_t GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
在程序中直接使用了宏定义绕过库函数的使用达到操作寄存器的目的

1.key.h

#ifndef __key_h_
#define __key_h_
#include "stm32f10x.h"
#include "sys.h"
#include "delay.h"

#define wk_up PAin(0)  //位操作参数宏,用多级宏映射寄存器
#define key0 PEin(4)
#define key1 PEin(3)
#define beep PBout(8)
#define led0 PBout(5)
#define led1 PEout(5)

u8 key_scan(u8 key_mode);
void key_init(void);
#endif

2.key.c


                
  • 3
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
STM32是一款广泛应用于嵌入式系统的微控制器系列。GPIO即通用输入/输出端口,用于实现与外部设备的连接和通信。在STM32中,GPIO输入检测逻辑主要包括以下几个步骤: 1. 配置GPIO口的工作模式:通过设置GPIO的模式寄存器,将GPIO口配置为输入模式。可以选择浮空输入、上拉输入或下拉输入模式,以满足不同应用的需求。 2. 配置GPIO口的输入电平变化检测方式:通过设置GPIO的触发方式寄存器,可以选择边沿触发或电平触发来检测输入电平的变化。边沿触发可以检测上升沿或下降沿,电平触发可以检测高电平或低电平。 3. 配置GPIO口的中断:通过设置GPIO的中断使能寄存器和中断屏蔽寄存器,可以使GPIO输入端口具备中断功能。当GPIO输入电平满足触发方式设置的条件时,将触发对应的中断。在中断处理程序中,可以进行相应的操作,比如读取输入端口的电平状态、清除中断标志等。 4. 读取GPIO输入电平状态:通过读取GPIO输入数据寄存器,可以获取到GPIO输入端口的当前电平状态。可以根据实际需求,判断输入电平的高低,进而做出相应的操作。 总结来说,STM32通过配置GPIO口的工作模式、输入电平变化检测方式和中断,实现了对GPIO输入检测逻辑。可以通过读取输入端口的电平状态,来判断外部设备是否有输入信号,并在满足触发条件时进行中断处理。这样,可以方便地实现与外部设备的交互和控制。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值