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灯处于熄灭状态

相关推荐
hairenjing11234 小时前
使用 Mac 数据恢复从 iPhoto 图库中恢复照片
windows·stm32·嵌入式硬件·macos·word
模拟IC攻城狮5 小时前
华为海思招聘-芯片与器件设计工程师-模拟芯片方向- 机试题-真题套题题目——共8套(每套四十题)
嵌入式硬件·华为·硬件架构·芯片
IT B业生6 小时前
51单片机教程(六)- LED流水灯
单片机·嵌入式硬件·51单片机
一枝小雨6 小时前
51单片机学习心得2(基于STC89C52):串口通信(UART)
单片机·嵌入式硬件·51单片机
IT B业生7 小时前
51单片机教程(一)- 开发环境搭建
单片机·嵌入式硬件·51单片机
u0101526588 小时前
STM32F103C8T6学习笔记2--LED流水灯与蜂鸣器
笔记·stm32·学习
海绵波波1079 小时前
Webserver(4.8)UDP、广播、组播
单片机·网络协议·udp
好想有猫猫9 小时前
【51单片机】串口通信原理 + 使用
c语言·单片机·嵌入式硬件·51单片机·1024程序员节
云卓科技9 小时前
无人车之路径规划篇
人工智能·嵌入式硬件·算法·自动驾驶
stm 学习ing10 小时前
C语言 循环高级
c语言·开发语言·单片机·嵌入式硬件·算法·嵌入式实时数据库