GPIO
Gerneral-Purpose IO ports,即通用IO口。
在嵌入式系统中常常有数量众多,但是却比较简单的外部设备/电路。
对这些设备/电路,有的需要CPU为之提供控制手段,有的则需要被CPU用做输入信号。
许多这样的设备/电路只要求一位,即只要有开/关两种状态就够了,比如控制某个LED灯亮与灭;或者通过获取某个管脚的电平属性来达到判断外围设备的状态。
对这些设备/电路的控制,使用传统的串行口或并行口都不合适,所以在微控制器芯片上一般都会提供一个“通用可编程IO接口”,即GPIO。
接口至少有两个寄存器,即“通用IO控制寄存器”与“通用IO数据寄存器”。
数据寄存器的各位都直接引致芯片外部,而对这种寄存器中每一位的作用,即每一位的信号流通方向,则可以通过控制寄存器中对应位独立地加以设置,比如可以设置某个管脚的属性为输入、输出或其它特殊功能。
注意
在实际的MCU中,GPIO是有多种形式的。比如,有的数据寄存器可以按照位寻址,有些却不能按照位寻址,这在编程时就要加以区分。
为了使用方便,很多MCU的GPIO接口除去两个标准寄存器必须具备外,还提供上拉寄存器,可以设置IO的输出模式是高阻,还是带上拉的电平输出,或者不带上拉的电平输出。这使得在电路设计中,外围电路就可以简化不少。
为什么要使用上拉电阻
一般作单键触发使用时,如果IC本身没有内接电阻,为了使单键维持在不被触发的状态或是触发后回到原状态,必须在IC外部另接一电阻。
数字电路有三种状态:高电平、低电平、和高阻状态,有些应用场合不希望出现高阻状态,可以通过上拉电阻或下拉电阻的方式使处于稳定状态,具体视设计要求而定!
一般说的是I/O端口,有的可以设置,有的不可以设置,有的是内置,有的是需要外接,I/O端口的输出类似于一个三极管的C,当C接通过一个电阻和电源连接在一起的时候,该电阻成为上拉电阻,也就是说,该端口正常时为高电平;C通过一个电阻和地连接在一起的时候,该电阻称为下拉电阻。
上拉电阻是用来解决总线驱动能力不足时提供电流的问题的。一般说法是上拉增大电流,下拉电阻是用来吸收电流。
关键字:ARM 体系结构 gpio
引用地址:
【ARM】gpio·arm体系结构之gpio
推荐阅读最新更新时间:2024-11-11 18:19
和英伟达收购交易失败后,Arm决定裁员12%至15%
Arm周一向路透社发邮件表示,公司计划裁员12%至15%。 该公司表示,裁员的主要地区是英国和美国。 Arm在邮件中还声称:“与任何企业一样,Arm 正在不断审查其业务计划,以确保公司在机会和成本之间取得适当的平衡。” 目前,Arm的所有者软银还在权衡Arm到底是在美国还是英国上市
[手机便携]
stm32 gpio的相关问题
gpio 设置流程: 设置gpio的时钟 设置gpio 的pin角 设置gpio pin的功能(速度 输入输出模式 reset) 设置gpio data void LED_Init(void) { GPIO_InitTypeDef GPIO_InitStructure; RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOG, ENABLE); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13 | GPIO_Pin_14 | GPIO_Pin_15; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_O
[单片机]
ARM核心板在动态尿量监测仪中的应用案例详解
1.1项目简介 尿量监测是检测患者多种指标中的一项重要内容,它是反映肾脏血流灌注水平的最直接最敏感的生理指标,对于重症患者来说,尿量常常能够在血肌酐升高之前预示肾功能的紊乱。根据AKIN国际共识制定的积习难改肾衰竭分层诊断标准——RIFLE标准,尿量是重要的分层诊断指标。连续每小时尿量监测可以及时评判肾功能状态,提示临床及早干预,阻止肾功能的进一步恶化。 特别是休克、心脏手术、大面积烧伤及肾功能不全等病人监测每小时尿量非常重要,它能够及时反映人体有效循环血量及肾脏功能。尿量的严密监测对于密切观察患者病情,了解机体生命状况,判断病情的转归和预后有着重要的临床意义。国内某厂家产品样式。 图1 国内某厂家产品 1.2系统描
[单片机]
英特尔:与移动时代失之交臂
英特尔 虽然在PC市场风生水起,将同属X86阵营的AMD压得喘不过气,但在移动市场却始终处于劣势,而 英特尔 也不得不做出壮士割腕的举措。实际上, 英特尔 曾一度有希望成为移动时代的领军者,只是战略失策让其与移动时代失之交臂。下面急速嵌入式小编一起来了解一下相关内容吧。 英特尔曾与 ARM 有过交集 1998年,英特尔从DEC(当年的处理器产业巨头)手里获得了Strong ARM 与 ARM 架构的完整授权,这意味着英特尔可以自行研发生产基于RISC精简指令集设计的ARM处理器。实际上,在随后的很长一个时期里(特别是在Pocket PC掌上电脑时代),英特尔旗下的“XScale”就一度成为ARM处理器中的“代
[嵌入式]
QT5.3.2在ARM上的移植
ubuntu10.04 准备移植phonon,4.5移植失败。播放声音就出错。。。没办法。转移到QtMutimedia 安装交叉编译工具这里就不提了。。。 1.下载QT5.3.2:http://download.qt.io/archive/qt/ 不小下载5.0,这个版本有问题。。。 2.配置 配置时需要注意的几点是: 如果是交叉编译,需要配置 xplatform选项,比如要在arm-linux平台上移植Qt的话,就在配置项中加上 -xplatform linux-arm-gnueabi-g++ ,Qt5支持的交叉平台都可在源码顶层目录中的 qtbase/mkspecs/ 下找到,每个子目录名代表一个交叉平
[单片机]
ARM(RISC)和x86(CISC)的技术差异
RISC和CISC,这一对冤家,从诞生之日开始就处在不停的纠缠之中。直到今天,两者经过多年的发展后,都在各自领域打开了一片天地,并且相互渗透。RISC专注高性能、高性能功耗比、小体积以及移动设备领域,CISC专注桌面、高性能和民用市场。现在,RISC的代表是ARM,而CISC的代表则是我们耳熟能详的x86。那么,他们的技术差异在哪里?究竟是怎样的技术分歧带来了两者如此大的差别呢? 指令集的出现 要说清楚RISC和CISC,也就是今天热门的ARM和x86之间的差异,还得把时间往前推一些,观察计算机诞生之初的一些事情,才能很清楚地了解指令集、精简和复杂之间的关系。 机器语言的实例 机器语言 含义 0000,0000,
[单片机]
arm-linux下交叉编译json-c-0.9库遇到的编译问题
在linux下比较成熟的json库要属json-c-0.9. 但是悲剧的是好多人编译不通过。 编译json-c arm版本 貌似可以顺利通过, 但是链接json-c动态库的时候会有提示: undefined reference to rpl_malloc 虚拟机:vmware 7.1.3 操作系统:ubuntu8.04 arm-linux-gcc版本: 4.2.2 config.h.in里定义了 #undef malloc #undef realloc 用//把这两行注释掉, 然后 autoconf ./configure --prefix=/usr/local/json-c-0.9for
[单片机]
arm交叉编译器gnueabi、none-eabi、arm-eabi、gnueabihf等的区别
交叉编译工具链的命名规则为:arch arch - 体系架构,如ARM,MIPS verdor - 工具链提供商 os - 目标操作系统 eabi - 嵌入式应用二进制接口 根据对操作系统的支持与否,ARM GCC可分为支持和不支持操作系统,如 arm-none-eabi:这个是没有操作系统的,自然不可能支持那些跟操作系统关系密切的函数,比如fork(2)。他使用的是newlib这个专用于嵌入式系统的C库。 arm-none-linux-eabi:用于Linux的,使用Glibc 1、arm-none-eabi-gcc (ARM architecture,no vendor,not target an o
[单片机]