当前位置:首页 > 单片机 > 单片机
[导读]一、Cortex M3的GPIO口特性 在介绍GPIO口功能前,有必要先说明一下M3的结构框图,这样能够更好理解总线结构和GPIO所处的位置。Cortex M3结构框图 从图中可以看出,GPIO口都是接在APB总线上的,而且M3具有两个AHB到

一、Cortex M3的GPIO口特性
在介绍GPIO口功能前,有必要先说明一下M3的结构框图,这样能够更好理解总线结构和GPIO所处的位置。

Cortex M3结构框图

从图中可以看出,GPIO口都是接在APB总线上的,而且M3具有两个AHB到APB桥,GPIO则直接接在AHB矩阵上,这样可以减少CPU和DMA控制器之间的竞争冲入,获得较高性能。APB总线桥配置为写缓冲区,使得CPU或DMA控制器可直接操作APB外设,而无需等待总线写操作完成。

M3数字I/O功能:
高速GPIO口,其寄存器被移到外设AHB总线,可以字节,半字和字寻址。
位电平置位和清零寄存器允许单指令置位和清零一个端口的任意位。
所有GPIO口寄存器支持M3位带操作。
整个端口值可以用一条指令写入。
GPIO口寄存器可由GPDMA控制器进行访问,可以进行DMA数据操作,使之与DMA请求同步。
单个I/O口方向可以控制。
所有I/O口在复位后默认作为上拉输入。(Why?因为微控制器连接了很多设备,如果复位后作为输出,则由于控制器电平状态不定,可能会导致外围设备产生动作,从而产生不利影响,故复位后一半都作为输入状态。)
M3可产生中断的数字端口:
PORT0 和 PORT2 端口的每个引脚都可以提供中断功能;
每个端口上的中断可被编程为上升沿、下降沿或边沿产生中断;
边沿检测是异步的,因此可以在没有时钟的情况下(例如掉电模式)操作。使用这种特性,就无需电平触发中断;
可掉电唤醒;
寄存器为软件提供挂起的上升沿中断、挂起的下降沿中断和整个挂起的 GPIO中断;
GPIO0 和 GPIO2 中断与外部中断 3 事件共用相同的 NVIC 通道。
二、GPIO口的寄存器描述
Cortex M3引脚的寄存器描述:


PINMODEx表示引脚模式选择寄存器,在使用前要配置好。

引脚模式选择寄存器位

PINMODEx

功能

复位后的值

00

引脚使能上拉电阻

00

01

中继模式

10

引脚无片内上拉或下拉电阻

11

引脚使能下拉电阻


中继模式说明:当引脚处于逻辑高电平,中继模式能使能上拉电阻;当引脚处于逻辑低电平时,中继模式会使能下拉电阻,这样当引脚配置为输入且没有外部驱动时,能够保持上一个已知状态。
PINSELx:功能选择寄存器。用来设定PORT引脚的功能,当PINSELx各位为0时,才用作GPIO
端口。
FIOxDIR:GPIO口方向寄存器,单独控制每个端口管脚的方向,可作为字节(8位),半字(16位)和字长(32位)的数据进行访问。
FIOxMASK:屏蔽寄存器。任何写、读的操作只在该寄存器对应位为“0“时才有效。

FIOxPIN:管脚值寄存器。只要管脚不配置为ADC,其他所有方式都可以从该位读出端口当前的实际状态。注:如果读FIOPIN寄存器,那么不管物理引脚的状态如何,在 FIOMASK
寄存器中被“1”屏蔽的位将始终读出0。

FIOxSET:输出引脚的状态。写 1 使相应的端口引脚产生高电平。写 0 没有影响。读该寄存器返回端口输出寄存器的当前内容。只可以更改 FIOMASK 中为 0 的位,即非屏蔽位。

FIOxCLR:控制输出引脚的状态。写 1 使相应的端口引脚产生低电平。写 0 没有影响。只可以更改 FIOMASK 中为 0 的位,即非屏蔽位。
2.1GPIO端口方向寄存器FIOxDIR(FIO0DIR??FIO4DIR- 0x2009 C000??0x2009 C080)
当引脚被配置为 GPIO功能时,该寄存器可用来控制引脚的方向。勿必根据引脚功能来设置每个引脚的方向。
注:GPIO引脚 P0.29和P0.30 与USB D+/-引脚共用,并且具有相同的方向。如果FP0DIR位29或位30在FIO0DIR寄存器中被配置为零,则P0.29 和P0.30都为输入。如果FP0DIR位29和位30被配置为1,则P0.29和P0.30都为输出。

高速GPIO端口方向寄存器位描述

符号

描述

复位值

31:0(字长数据)

FP0DIR

FP1DIR

FP2DIR

FP3DIR

FP4DIR

0

1

控制的引脚为输入引脚

控制的引脚为输出引脚

0


字和半字的操作基本类似,只是可以通过8位寄存器或者16位的寄存器分别控制方向而已,这里不再解释,请参看《深入浅出Cortex-M3 LPC1700》.

2.2GPIO端口输出设置寄存器FIOxSET(FIO0SET??FIO7SET - 0x2009 C018??0x2009 C098)
当引脚在输出模式中被配置为 GPIO 时,该寄存器在端口引脚产生高电平输出。向该寄存器的某些位写入“1”时,对应的引脚产生高电平。写入“0”无效。如果需要引脚输出低电平或第二种功能,那么写 1 到 FIOxSET 的相应位无效。 读FIOxSET 寄存器返回该寄存器的值,该值由前一次对 FIOxSET 和 FIOxCLR(或前面提到的 FIOxPIN)的写操作确定,它不反映任何外部环境对 I/O引脚的影响。 通过 FIOxSET 寄存器访问的端口引脚受到 FIOxMASK 寄存器相应位的限制。

高速GPIO端口输出设置寄存器位描述

符号

描述

复位值

31:0(字长数据)

FP0SET

FP1SET

FP2SET

FP3SET

FP4SET

0

1

控制的引脚输出不改变
控制的引脚输出被设为高电平

0


2.3GPIO端口输出清零寄存器FIOxCLR(FIO0CLR??FIO07CLR - 0x2009 C01C??0x2009 C09C)
当引脚在输出模式中被配置为 GPIO 时,该寄存器在端口引脚产生低电平输出。向某些位写入“1”会使相应的引脚产生低电平,同时清零 FIOxSET 寄存器的相应位。写入“0”无效。如果引脚被配置为输入或其它功能,那么写 FIOxCLR 对引脚没有影响。 通过FIOxCLR寄存器访问的端口引脚受到FIOxMASK寄存器相应位的限制.

高速GPIO端口输出清零寄存器位描述

符号

描述

复位值

31:0(字长数据)

FP0CLR

FP1CLR

FP2CLR

FP3CLR

FP4CLR

0

1

控制的引脚输出不改变
控制的引脚输出被设为低电平

0


2.4GPIO端口引脚值寄存器FIOxPIN(FIO0PIN??FIO7PIN- 0x2009 C014??0x2009 C094)
该寄存器提供了端口引脚的值,可配置这些值来执行仅为数字的功能。该寄存器将给出引脚的当前逻辑值,而不管引脚是否配置为输入或输出,或作为 GPIO或作为其它可选的数字功能。
例如,特殊的端口引脚可能具有 GPIO输入、GPIO 输出、UART 接收和 PWM 输出等可选功能。无论该引脚配置成何种功能,都可以从相应的 FIOxPIN 寄存器中读出其当前的逻辑状态。 如果引脚配置为模拟功能,当选择了模拟配置时,引脚状态不能被读出。将引脚选择用作A/D输入会断开与引脚数字部分的连接。在这种情况下,从 FIOxPIN 寄存器中读出的引脚值无效。
写 FIOxPIN 寄存器时, FIOxPIN 寄存器的值会保存到端口输出寄存器,而无需使用 FIOxSET和 FIOxCLR寄存器来获得整个写入值。由于这种特性影响整个端口,因此在应用中时要小心。 通过 FIOxPIN 寄存器访问的端口引脚受到 FIOxMASK 寄存器相应位的限制。 只有在屏蔽寄存器中用0 屏蔽的引脚与高速 GPIO 端口引脚值寄存器的当前内容相互关联。

高速GPIO端口引脚值寄存器位描述

符号

描述

复位值

31:0(字长数据)

FP0VAL

FP1VAL

FP2VAL

FP3VAL

FP4VAL

0

1

控制的引脚输出设为低电平
控制的引脚输出设为高电平

0


2.5高速GPIO端口屏蔽寄存器FIOxMASK (FIO0MASK??FIO7MASK - 0x2009 C010??0x2009 C090)
该寄存器用来屏蔽某些端口引脚,被屏蔽的引脚将无法通过 FIOxPIN、 FIOxSET 或 FIOxCLR寄存器写访问。当读FIOxPIN 寄存器时,屏蔽寄存器还将过滤相应端口的内容。
通过读或写访问,该寄存器中为“0”的位使能相应物理引脚的访问。如果该寄存器中的位为“1”,则相应位将不会通过写访问改变,并且读操作时将不会在更新的 FIOxPIN 寄存器中反映出来。

高速GPIO端口引脚值寄存器位描述

符号

描述

复位值

31:0(字长数据)

FP0VAL

FP1VAL

FP2VAL

FP3VAL

FP4VAL

0

1

控制的引脚输出设为低电平
控制的引脚输出设为高电平

0


2.1GPIO端口方向寄存器FIOxDIR(FIO0DIR??FIO4DIR- 0x2009 C000??0x2009 C080)
当引脚被配置为 GPIO功能时,该寄存器可用来控制引脚的方向。勿必根据引脚功能来设置每个引脚的方向。
注:GPIO引脚 P0.29和P0.30 与USB D+/-引脚共用,并且具有相同的方向。如果FP0DIR位29或位30在FIO0DIR寄存器中被配置为零,则P0.29 和P0.30都为输入。如果FP0DIR位29和位30被配置为1,则P0.29和P0.30都为输出。

高速GPIO端口方向寄存器位描述

符号

描述

复位值

31:0(字长数据)

FP0DIR

FP1DIR

FP2DIR

FP3DIR

FP4DIR

0

1

控制的引脚为输入引脚
控制的引脚为输出引脚

0


字和半字的操作基本类似,只是可以通过8位寄存器或者16位的寄存器分别控制方向而已,这里不再解释,请参看《深入浅出Cortex-M3 LPC1700》.

2.2GPIO端口输出设置寄存器FIOxSET(FIO0SET??FIO7SET - 0x2009 C018??0x2009 C098)
当引脚在输出模式中被配置为 GPIO 时,该寄存器在端口引脚产生高电平输出。向该寄存器的某些位写入“1”时,对应的引脚产生高电平。写入“0”无效。如果需要引脚输出低电平或第二种功能,那么写 1 到 FIOxSET 的相应位无效。 读FIOxSET 寄存器返回该寄存器的值,该值由前一次对 FIOxSET 和 FIOxCLR(或前面提到的 FIOxPIN)的写操作确定,它不反映任何外部环境对 I/O引脚的影响。 通过 FIOxSET 寄存器访问的端口引脚受到 FIOxMASK 寄存器相应位的限制。

高速GPIO端口输出设置寄存器位描述

符号

描述

复位值

31:0(字长数据)

FP0SET

FP1SET

FP2SET

FP3SET

FP4SET

0

1

控制的引脚输出不改变
控制的引脚输出被设为高电平

0


2.3GPIO端口输出清零寄存器FIOxCLR(FIO0CLR??FIO07CLR - 0x2009 C01C??0x2009 C09C)
当引脚在输出模式中被配置为 GPIO 时,该寄存器在端口引脚产生低电平输出。向某些位写入“1”会使相应的引脚产生低电平,同时清零 FIOxSET 寄存器的相应位。写入“0”无效。如果引脚被配置为输入或其它功能,那么写 FIOxCLR 对引脚没有影响。 通过FIOxCLR寄存器访问的端口引脚受到FIOxMASK寄存器相应位的限制.

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

随着汽车软件数量爆发式的增长,整个行业都需要重新思考汽车产品的开发流程。为此,Arm推出了丰富的硬件IP、新的系统IP,以及全新的汽车计算与计算子系统产品路线图,旨在为各种汽车应用实现性能、功能安全、可扩展等方面的支持。

关键字: ARM 汽车电子

知名移动芯片设计公司ARM最近迈出重要一步,它正式推出汽车芯片设计。ARM推出的芯片设计方案名叫Neoverse,随同芯片一起推出的还有面向汽车制造商、汽车供应商的新系统。

关键字: ARM 汽车芯片 芯片

随着通用人工智能的发展,数据中心的计算需求逐步提高。针对多模态数据、大模型的推理和训练需要更高的算力支持,而随着算力提升与之而来的还需更关注在功耗方面的优化。对于头部云计算和服务厂商而言,针对专门用例提高每瓦性能变得至关...

关键字: ARM 服务器 AI Neoverse CSS

一直以来,riscv架构都是大家的关注焦点之一。因此针对大家的兴趣点所在,小编将为大家带来riscv架构的相关介绍,详细内容请看下文。

关键字: riscv ARM riscv架构

最新消息报道,知情人士透露Arm近日裁掉了中国70多名软件工程师,并会将部分职位转移到中国以外的地区。Arm通过“全球服务”部门已经将支持其中国客户的工作外包给安谋科技,该部门曾经拥有约200名员工。

关键字: ARM 裁员

凭借着在个人计算机领域的广泛应用打下的坚实基础,X86自始至终统治着整个服务器生态。而这并不是业界希望看到的,因此Arm服务器被给予厚望。业界期盼Arm能够带来新的服务器CPU替代:打破一个同质化的数据中心架构,实现更高...

关键字: ARM 服务器 AI

本文中,小编将对64位处理器予以介绍,如果你想对它的详细情况有所认识,或者想要增进对它的了解程度,不妨请看以下内容哦。

关键字: 处理器 ARM AMD

32位MCU开发方案的设计实例包括以下几个方面:

关键字: MCU ARM

业内消息,日本唯一一家负责定制 Soc 芯片的上市公司 Socionext 宣布将联合台积电合作开发一款 32 核 ARM 处理器,将采用台积电的 2 nm 制程工艺,该 CPU 采用了 Arm 的 Neoverse 计...

关键字: 台积电 2nm ARM 处理器 Socionext

业内消息,近日传闻芯片巨头英伟达正在开发基于 Arm 架构并适用于微软 Windows 系统的 PC 芯片,同时知情人士称 AMD 也计划制造基于 Arm 的芯片,这些芯片最快会在 2025 年发布,英特尔股价应声下滑。

关键字: 英伟达 ARM 芯片 微软 英特尔 AMD
关闭
关闭