1-4 GPIO输入模式(ARM-GD32)

输入结构

浮空输入模式:

上拉输入:

上面的电路浮空输入的状态是不确定的故需要通过设置上拉电阻的方式将电平设置为高电平,也就是确定的状态,此时下拉电阻处于关闭的状态,当按键没有按下的时候,处于浮空的状态默认是高电平,当按键按下的时候处于低电平,经过施密特触发器将电平信号转换为数字信号0存储到输入状态寄存器中,通过读取输入状态寄存器的值来获取电平状态(解决浮空输入模式下电平不确定的问题)。

下拉输入:

按键驱动电路,按键连接到限流电阻,然后连接到VCC,使用下拉输入的模式,将驱动单元的下拉电阻打开,当按键没有按下的时候端口处于低电平状态,当按键按下的时候电流从外部流向单片机的内部,会检测为高电平,(弱上拉和弱下拉)

浮空输入检测按键要在上拉和下拉的作用下加上上拉电阻和下拉电阻,让电路在悬空的状态写有一个明确的电平(上拉电阻使用的是2-10k的阻值)。

使用配置寄存器的方式驱动按键检测

电路分析:按键的一端连接到GND一端连接上拉电阻接3.3V电源,有一个R53的限流电阻用于保护IO口,C44使用了一个100nf的电容,滤波电容在一定程度上可以实现硬件消除抖动的效果,当按键没有被按下时端口的电平被4K的上拉电阻拉到高电平的状态(此时处于高阻状态),按键按下的时候电流从上拉电阻流线GND,此时端口为低电平。

寄存器配置:

ARMGD32

  • GPIOA 基地址:0x4001 0800
  • GPIOB 基地址:0x4001 0C00
  • GPIOC 基地址:0x4001 1000
  • GPIOD 基地址:0x4001 1400
  • GPIOE 基地址:0x4001 1800
  • GPIOF 基地址:0x4001 1C00
  • GPIOG 基地址:0x4001 2000
  • AFIO 基地址:0x4001 0000

KEY1对应的端口号为PA0这个时候找到端口对应的寄存器

注1:使用8424法判断对应的数值为4

读取端口电平状态寄存器

代码实现

cpp 复制代码
#define  GPIOA_OCTL (*(uint32_t *)(0x40010800 + 0x0C))
// 外设总线控制,时钟使能控制寄存器
#define  RCU_APB2EN (*(uint32_t *)(0x40021000 + 0x18))
// 按键检测寄存器控制
#define GPIOA_CTL0 (*(uint32_t *)(0x40010800 + 0x00))
#define GPIOA_ISTAT (*(uint32_t *)(0x40010800 + 0x08))

static void Delay(uint32_t count)
{
	while (count--);
}

int main(void)
{
	/*使能GPIO的时钟*/
	RCU_APB2EN |= 1 << 2;
	/*配置PA8为推挽输出模式*/
	GPIOA_CTL1 = 0x44444442;
	/*配置PA0为浮空输入模式*/
	GPIOA_CTL0 = 0x44444444;
	while (1)
	{
		while((GPIOA_ISTAT & (1 << 0)) == 0){
		    GPIOA_OCTL |= 1 << 8;  //00000000 00000000 00000001 00000000	
		}
		GPIOA_OCTL &= ~(1 << 8); //11111111 11111111 11111110 11111111
		
		/*
		   1 < 8 位是一个32位数据,对于ARM32位单片机平台
		   常数默认为uint32位
		*/
		
	}
}

当按键按下的时候地点亮发光的led灯,当按键没有被按下的时候LED灯处于熄灭状态

相关推荐
流殇25824 分钟前
ARM中要使用的汇编基础
汇编·arm开发
redcocal8 小时前
地平线秋招
python·嵌入式硬件·算法·fpga开发·求职招聘
辰哥单片机设计11 小时前
门磁模块详解(防盗感应开关 STM32)
stm32·单片机·嵌入式硬件·传感器
夜间去看海11 小时前
基于51单片机的自动清洗系统(自动洗衣机)
嵌入式硬件·51单片机·proteus·洗衣机
yrx02030712 小时前
stm32 IIC总线busy解决方法
stm32·单片机·嵌入式硬件
YHPsophie13 小时前
ATGM331C-5T杭州中科微BDS/GNSS全星座定位授时模块应用领域
经验分享·笔记·单片机·信息与通信·交通物流
钡铼技术物联网关13 小时前
Codesys 与 ARMxy ARM 工业控制器:工业控制的黄金组合
linux·运维·服务器·arm开发·硬件工程
Liii40313 小时前
【ARM】Cache深度解读
java·arm开发·spring
Liii40314 小时前
【ARM】中断的处理
arm开发·arm