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

读取端口电平状态寄存器

代码实现

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

the7主题下载,探索WordPress主题的无限可能

在数字时代&#xff0c;一个出色的网站是任何企业或个人品牌的必备。但在这个竞争激烈的网络世界中&#xff0c;如何让您的网站脱颖而出&#xff1f;答案就是 the7 —— 一款专为创造独特和视觉冲击力强的网站而设计的 WordPress 主题。 1. 无限设计可能性 the7 以其独特的设…

Mini Cheetah 代码分析(八)基于零空间的任务分级

一、主要公式 二、源代码注释 三、相关原理解释 一、主要公式 二、源代码注释 该功能的实现在文件KinWBC.cpp中的FindConfiguration函数&#xff0c;主要看注释&#xff0c;与公式是能够对应起来的&#xff0c;由第0个任务&#xff0c;也就是接触任务开始进行迭代&#xff0…

【MATLAB】Enigma机加密原理与自实现

文章目录 什么是EnigmaEnigma机加密通信流程Enigma的物理构造Enigma的加密设置Enigma加密通信密码重新设置Enigma加密消息拼接注意 Enigma的解密分解设置Enigma解密通信密码重新设置Enigma解密消息 Enigma的弱点MATLAB自实现Enigma加密与解密Enigma_functionRotate_functiontes…

Scrapy爬虫:利用代理服务器爬取热门网站数据

在当今数字化时代&#xff0c;互联网上充斥着大量宝贵的数据资源&#xff0c;而爬虫技术作为一种高效获取网络数据的方式&#xff0c;受到了广泛的关注和应用。本文将介绍如何使用Scrapy爬虫框架&#xff0c;结合代理服务器&#xff0c;实现对热门网站数据的高效爬取&#xff0…

金价又双叒涨了!现货黄金什么比较好

虽然近期有新闻显示&#xff0c;国内的实物黄金价格出现大幅的下跌&#xff0c;但是从整体看&#xff0c;多个黄金投资品种的长期上升趋势还是比较稳定的&#xff0c;因此我们会看到&#xff0c;很多投资者会趁现在这波下跌重新入场做多。那么投资黄金买什么比较好呢&#xff1…

2024年5月18日(星期六)骑行香杆箐

2024年5月18日 (星期六&#xff09;骑行香杆箐&#xff0c;早8:30到9:00&#xff0c;郊野公园西门集合&#xff0c;9:30准时出发【因迟到者&#xff0c;骑行速度快者&#xff0c;可自行追赶偶遇。】 偶遇地点:郊野公园西门集合 &#xff0c;家住东&#xff0c;西&#xff0c;南…

dvwa靶场 JavaScript Attacks(js攻击)全难度教程(附代码分析)

JS简介 一种解释型语言&#xff08;代码不需要编译&#xff09;&#xff0c;一般镶嵌在html或者php中实现。 JavaScript Attacks&#xff08;Security Level: low&#xff09; 代码分析 <?php $page[ body ] . <<<EOF <script>/* MD5 code from here h…

参赛指南第二弹!9省齐发 详解赛事参与全攻略

一. 大赛介绍 中国机器人及人工智能大赛是由中国人工智能学会、教育部高等学校计算机课程教学指导委员会联合主办。旨在引导和激励广大青年学生弘扬创新精神&#xff0c;搭建良好的科技创新赛事平台&#xff0c;积极推动广大学生参与机器人、人工智能科技创新实践、提高团队协…

动规解决01背包/完全背包精讲

还不会用动态规划解决01背包/完全背包&#xff1f;看这一篇文章就够了&#xff01; 首先我们要明白什么是01背包和完全背包。 背包问题总体问法就是&#xff1a; 你有一个背包&#xff0c;最多能容纳的体积是V。 现在有n个物品&#xff0c;第i个物品的体积为vi​ ,价值为wi​…

Linux|如何允许 awk 使用 Shell 变量

引言 当我们编写 shell 脚本时&#xff0c;我们通常会在脚本中包含其他较小的程序或命令&#xff0c;例如 awk 操作。就 Awk 而言&#xff0c;我们必须找到将一些值从 shell 传递到 Awk 操作的方法。 这可以通过在 Awk 命令中使用 shell 变量来完成&#xff0c;在本文中&#x…

做全域运营赛道,如何避免被割韭菜?

当下&#xff0c;全域运营赛道逐渐成型&#xff0c;许多创业者虽然都有了做全域运营服务商的想法&#xff0c;但却因全域运营是割韭菜等流言而心存疑虑&#xff0c;担心自己上当受骗&#xff0c;赔得血本无归。 事实上&#xff0c;关于全域运营是不是割韭菜这个问题&#xff0c…

Electron自动化测试技术选型调研

Electron简介 Electron是一个开源的框架&#xff0c;用于构建跨平台的桌面应用程序。它由GitHub开发并于2013年首次发布。Electron允许开发人员使用Web技术&#xff08;如HTML、CSS和JavaScript&#xff09;来构建桌面应用程序&#xff0c;同时可以在Windows、macOS和Linux等操…

量子计算机接入欧洲最快超算!芬兰加快混合架构算法开发

内容来源&#xff1a;量子前哨&#xff08;ID&#xff1a;Qforepost&#xff09; 文丨浪味仙 排版丨沛贤 深度好文&#xff1a;1900字丨7分钟阅读 摘要&#xff1a;芬兰技术研究中心&#xff08;VTT&#xff09;与 CSC 展开合作&#xff0c;基于量子计算机超算架构进行算法开…

Java为什么会成为现在主流的编程语言

Java为什么会成为现在的主流语言 前言一、Java语言概述Java是什么为什么大多数人会选择从事Java为什么从事Java的工作者数量从年递减 二、Java语言的特点简单性面向对象分布式&#xff08;微服务&#xff09;健壮性安全性体系结构中立可移植性解释型高性能多线程动态性 三、Jav…

Linux连接文件那点事

什么是连接文件 将一个文件和另一个文件建立联系&#xff0c;分为硬链接和软连接&#xff08;符号连接&#xff09;。 硬链接 Linux中&#xff0c;所有的文件都有一个inode&#xff0c;这个东西就是文件的ID号&#xff0c;硬链接的方式就是通过这个inode来产生新的文件名来建…

ChatGPT4O:自然语言交互

ChatGPT 4O&#xff1a;引领自然语言处理的新纪元 一、技术细节与强大功能二、创新点与技术突破三、应用场景与商业化前景 在科技的浪潮中&#xff0c;自然语言处理&#xff08;NLP&#xff09;领域一直备受关注。最近&#xff0c;OpenAI公司发布了其最新的NLP模型——ChatGPT …

echarts 环形图实现透明间隔,嵌套环形图片和图形

echarts 环形图实现透明间隔&#xff0c;嵌套环形图片和图形 环形图实现透明间隔环形图嵌套环形图片环形图嵌套环形图形 环形图实现透明间隔 首先通过 radius 属性实现一个圆环图 再通过 padAngle 属性设置扇区角度即可 使用 borderRadius 属性设置扇形区块的内外圆角半径&…

【PDF技巧】PDF如何解密?

PDF文件设置了加密&#xff0c;需要密码才能够打开文件或者编辑文件&#xff0c;那么如何解密PDF密码&#xff1f;今天我们来一起学习一下。 首先是在已知密码的情况下&#xff0c;PDF文件中的打开密码或者是限制编辑&#xff0c;想要解密PDF密码&#xff0c;我们只需要在PDF编…

这些网站我愿称之为做答辩PPT的神

很多快要毕业的同学在做答辩PPT的时候总是感觉毫无思路&#xff0c;一窍不通。但这并不是你们的错&#xff0c;对于平时没接触过相关方面&#xff0c;第一次搞答辩PPT的人来说&#xff0c;这是很正常的一件事。一个好的答辩PPT可以根据以下分为以下几部分来写。 1.研究的背景和…