首页 理论教育 GPIODATA寄存器和中断控制介绍

GPIODATA寄存器和中断控制介绍

时间:2023-11-17 理论教育 版权反馈
【摘要】:为了实现这种功能,GPIODATA寄存器覆盖了存储器映射中的256个单元。图5-2GPIODATA写入示例图5-3GPIODATA读取示例2.中断控制每个GPIO端口的中断能力都由7个寄存器控制。即GPIOMIS寄存器仅显示允许被传送到中断控制器的中断条件。当GPIO复用功能选择寄存器使能硬件控制时,引脚状态将由它的复用(即外设)功能控制。

GPIODATA寄存器和中断控制介绍

1.数据控制

数据控制寄存器允许软件配置GPIO的操作模式。当数据寄存器捕获到输入数据时,数据方向寄存器将GPIO配置为输入;当数据寄存器通过端口输出数据时,数据方向寄存器将GPIO配置为输出。

(1)数据方向操作

GPIO方向寄存器(GPIODIR)用于将每个独立的引脚配置成输入或输出。当数据方向寄存器中的位被清零时,则配置为输入,使寄存器中的相应位捕获并储存GPIO端口的值;当数据方向寄存器中的位被置位时,则配置为输出,数据寄存器中的相应位便可驱动GPIO端口。

(2)数据寄存器的操作

为了提高软件的效率,可将地址总线上的[9∶2]位用作屏蔽位,对GPIO端口的数据寄存器(GPIODATA)中的各个位进行修改。采用这种方式使软件驱动程序仅用一条指令就可修改任意一个GPIO引脚,而不会影响其他引脚的状态。该方式与通过“读-修改-写”来操作GPIO引脚的传统做法不同。为了实现这种功能,GPIODATA寄存器覆盖了存储器映射中的256个单元

在进行写入操作时,如果与数据位相关联的地址位被置位,则GPIODATA寄存器的值将相应地发生变化,如果地址位被清零,那么数据位将保持不变。

例如,将0xEB写入到地址GPIODATA+0x98处,其结果如图5-2所示。其中,u表示写入操作没有改变数据。

在进行读操作时,如果与数据位相关联的地址位被置位,那么就读取数据寄存器中的值;如果与数据位相关联的地址位被清零,则不管数据寄存器中的实际值是什么都读取0。例如,读取地址GPIODATA+0x0C4处的值,其结果如图5-3所示。

978-7-111-51624-8-Chapter05-2.jpg

图5-2 GPIODATA写入示例

978-7-111-51624-8-Chapter05-3.jpg

图5-3 GPIODATA读取示例

2.中断控制

每个GPIO端口的中断能力都由7个寄存器控制。这些寄存器可用于选择中断源、极性与边沿属性。当一个或多个输入产生中断时,只将其中的一个中断输出,发送到供所有GPIO端口使用的中断控制器中。对于边沿触发,为使其他中断可用,软件必须清除该中断;对于电平触发,只有保持外部电平的状态,才能使控制器识别中断的发生。

以下三个寄存器用来定义中断触发的边沿或测量:

①GPIO中断检测寄存器(GPIOIS)。

②GPIO中断双边沿寄存器(GPIOIBE)。(www.xing528.com)

③GPIO中断事件寄存器(GPIOIEV)。

通过GPIO中断屏蔽寄存器(GPIOIM)可使能/禁止中断。当产生中断条件时,可在GPIO原始中断状态寄存器(GPIORIS)和GPIO屏蔽后的中断状态寄存器(GPIOMIS)中观察到中断信号的状态。即GPIOMIS寄存器仅显示允许被传送到中断控制器的中断条件。GPIORIS寄存器则表示GPIO引脚满足的中断条件,但不一定发送到控制器中。

注意:往GPIO中断清零寄存器(GPIOICR)中的位写1可以清除相应的中断。在设置中断控制寄存器(GPIOIS、GPIOIBE或GPIOIEV)时,应该保持中断的屏蔽状态(GPIOIM清零),如果相应的位没有屏蔽,那么向中断控制寄存器中写入任何值都有可能产生伪中断。

(1)ADC触发源

任何GPIO引脚都可以使用GPIOADC控制寄存器(GPIOADCCTL)将其配置成ADC的一个外部触发。如果任一GPIO端口被配置成非屏蔽的中断引脚,当该端口产生一个中断时,就会发出一个外部触发信号到ADC。此时如果ADC事件复用选择寄存器(ADCEMUX)被配置为使用外部触发器,那么就会启动ADC转换。

(2)μDMA触发源

任何GPIO引脚都可以使用GPIODMA控制寄存器(GPIODMACTL)配置成μDMA的一个外部触发源。如果任一GPIO端口被配置为非屏蔽的中断引脚,当该端口产生一个中断,就会发出一个外部触发信号到μDMA。如果根据GPIO信号μDMA被配置成启动传输,那么就会启动传输。

3.模式控制

GPIO引脚既可以被软件控制也可以被硬件控制。大部分的引脚默认为软件控制,此时GPIODATA寄存器用来读写相应的引脚。当GPIO复用功能选择寄存器(GPIOAFSEL)使能硬件控制时,引脚状态将由它的复用(即外设)功能控制。

更多的引脚复用功能选择由GPIO端口控制寄存器(GPIOPCTL)提供,该寄存器可为每个GPIO选择其中一个外设功能。注意:如果一个引脚被用作ADC输入,那么GPIOAM-SEL寄存器中相应位必须被置位来禁止模拟隔离电路。

4.提交(Commit)控制

GPIO提交控制寄存器提供的保护层可防止对重要硬件外设的意外编程。该功能可保护4个JTAG/SWD引脚(PC[3:0])与NMI引脚(PD7和PF0)。向GPIO复用功能选择寄存器(GPIOAFSEL)、GPIO上拉电阻选择寄存器(GPIOPUR)、GPIO下拉电阻选择寄存器(GPIOPDR)与GPIO数字使能寄存器(GPIODEN)中受保护的位写入数据将不会被确认保存,除非GPIO锁定寄存器(GPIOLOCK)没有被锁定,同时GPIO提交寄存器(GPIOCR)中的相应位被置位。

5.引脚(Pad)控制

可根据应用程序的要求用软件来配置GPIO引脚。引脚控制寄存器包括GPIODR2R、GPIODR4R、GPIODR8R、GPIOODR、GPIOPUR、GPIOPDR、GPIOSLR与GPIODEN寄存器。这些寄存器控制着引脚的驱动电流大小、开漏配置、上/下拉电阻的选择、转换率(slew-rate)控制和数字输入使能等。如果在配置为开漏输出的GPIO端口上加上5V电压,其输出电压将取决于上拉电阻的大小,而没有配置的GPIO引脚将输出5V电压。

6.标识

复位时配置的标识寄存器允许软件将模块当作GPIO块进行检测和识别。标识寄存器包括GPIOPeriphID0~GPIOPeriphID7寄存器与GPIOPCellID0~GPIOPCellID3寄存器。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈