理论教育 转变为:优化GPIO端口寄存器使用方法

转变为:优化GPIO端口寄存器使用方法

时间:2023-06-15 理论教育 版权反馈
【摘要】:例如,SPISIMOB可以根据需要设置到GPIO12或GPIO24。位31~24,QUALPRD3:GPIO31~GPIO24指定采样周期数。对GPIO引脚与一个外设功能有效。位25~0中的每两位定义引脚GPIO44~GPIO32输入限定的类型。方向寄存器当每个I/O引脚在复用选择寄存器中被设置为GPIO时,方向寄存器将它们设置为输入或输出。模拟I/O方向寄存器AIODIR控制AIO14~AIO2的方向,它的格式如下。端口B上拉禁止寄存器GPBPUD用于设置引脚GPIO44~GPIO32的上拉电阻。端口A位置1寄存器GPASET用于设置引脚GPIO31~GPIO0的状态。

转变为:优化GPIO端口寄存器使用方法

每个通用I/O引脚受复用选择(MUX)、方向、数据、设置、清除和翻转等寄存器的控制。

(1)复用选择寄存器

每个引脚除了通用I/O功能外,最多有3个不同的外设功能可供选择。复用选择寄存器用于选择引脚是作为I/O使用还是作为对应的外设引脚使用。

例如,通过设置寄存器GPAMUX1的位13、12,可以选择GPIO6引脚的功能。

位13、12,GPAMUX1:引脚功能选择。

●00 GPIO6

●01 EPWM4A(O)

●10 EPWMSYNCI(I)

●11 EPWMSYNCO(O)

有的外设功能可以通过复用选择寄存器选择到多个引脚。例如,SPISIMOB可以根据需要设置到GPIO12或GPIO24。若将GPAMUX位25、24设置成11,GPIO12可以用于SPISI-MOB;若将GPAMUX位17、16设置为11,GPIO24可以用于SPISIMOB。

复用选择寄存器的位定义见表2-14~表2-17。

2-14 复用选择寄存器GPAMUX1的位定义

978-7-111-57271-8-Chapter02-101.jpg

(续)

978-7-111-57271-8-Chapter02-102.jpg

2-15 复用选择寄存器GPAMUX2的位定义

2-16 复用选择寄存器GPBMUX1的位定义

978-7-111-57271-8-Chapter02-104.jpg

(续)

978-7-111-57271-8-Chapter02-105.jpg

2-17 模拟复用选择寄存器AIOMUX1的位定义

978-7-111-57271-8-Chapter02-106.jpg

(2)输入限定寄存器

限定控制寄存器GPxCTRL(x=A,B)为配置成输入限定的输入引脚指定采样周期。采样周期是限定采样次数时间与SYSCLKOUT周期的相对值。限定选择寄存器GPxSELn用于指定采样次数。

端口A限定控制寄存器GPACTRL的位定义格式如下。

978-7-111-57271-8-Chapter02-107.jpg

位31~24,QUALPRD3:GPIO31~GPIO24指定采样周期数。

0x00 不滤波,即只是同步到SYSCLKOUT信号

0x01 采样周期=2个SYSCLKOUT周期

0x02 采样周期=4个SYSCLKOUT周期

0xFF 采样周期=510个SYSCLKOUT周期

位23~16,QUALPRD2:GPIO23~GPIO16指定采样周期数。同QUALPRD3。

位15~8,QUALPRD1:GPIO15~GPIO8指定采样周期数。同QUALPRD3。

位7~0,QUALPRD0:GPIO7~GPIO0指定采样周期数。同QUALPRD3。

端口B限定控制寄存器GPBCTRL的位定义格式如下。

978-7-111-57271-8-Chapter02-108.jpg

位31~24,保留位。

位15~8,QUALPRD1:GPIO44~GPIO40指定采样周期数。

位7~0,QUALPRD0:GPIO39~GPIO32指定采样周期数。

端口A限定选择寄存器GPAQSEL1的位定义格式如下。

978-7-111-57271-8-Chapter02-109.jpg

位31~0中的每两位定义引脚GPIO15~GPIO0输入限定的类型。

00:仅由SYSCLKOUT同步。对外设与GPIO引脚都有效。

01:用3次采样限定。对GPIO引脚与一个外设功能有效。

10:用6次采样限定。对GPIO引脚与一个外设功能有效。

11:异步(无同步或限定)。该选项只用于配置为外设的引脚。

端口A限定选择寄存器GPAQSEL2的位定义格式如下。

978-7-111-57271-8-Chapter02-110.jpg

位31~0中的每两位定义引脚GPIO31~GPIO16输入限定的类型。

端口B限定选择寄存器GPBQSEL1的位定义格式如下。

978-7-111-57271-8-Chapter02-111.jpg(www.daowen.com)

位25~0中的每两位定义引脚GPIO44~GPIO32输入限定的类型。

(3)方向寄存器

当每个I/O引脚在复用选择寄存器中被设置为GPIO时,方向寄存器将它们设置为输入或输出。复位时所有GPIO引脚都被设成输入。

方向寄存器GPADIR控制GPIO31~GPIO0的方向,它的格式如下。

978-7-111-57271-8-Chapter02-112.jpg

如果某位为0,则相应的GPIO引脚配置成输入(复位值);如果某位为1,则相应的GPIO引脚配置成输出。

方向寄存器GPBDIR控制GPIO44~GPIO32的方向,它的格式如下。

978-7-111-57271-8-Chapter02-113.jpg

模拟I/O方向寄存器AIODIR控制AIO14~AIO2的方向,它的格式如下。

978-7-111-57271-8-Chapter02-114.jpg

如果某位为0,则相应的AIO引脚配置成输入(复位值);如果某位为1,则相应的AIO引脚配置成输出。

(4)上拉禁止寄存器上拉禁止寄存器用于设置哪些引脚需要设置上拉电阻。当外部复位信号978-7-111-57271-8-Chapter02-115.jpg为低时,能够配置为ePWM的引脚(GPIO0~GPIO11)的内部上拉电阻是禁止的。其他引脚在复位时内部上拉电阻是使能的。

端口A上拉禁止寄存器GPAPUD用于设置引脚GPIO31~GPIO0的上拉电阻。位与引脚的对应关系与GPADIR一样。当某位为1时,禁止该位对应引脚的上拉电阻。为0时,使能该位对应引脚的上拉电阻(复位值)。

端口B上拉禁止寄存器GPBPUD用于设置引脚GPIO44~GPIO32的上拉电阻。位与引脚的对应关系与GPBDIR一样。

(5)数据寄存器

数据寄存器指示当前GPIO引脚的状态,可以读/写。如果引脚配置成输出,向寄存器中写数据可以决定输出状态。

端口A数据寄存器GPADAT用于读/写引脚GPIO31~GPIO0的状态。位与引脚的对应关系与GPADIR一样。当数据寄存器某位为0时,且引脚配置成输出,则输出变低。为1时,且引脚配置成输出,则输出变高。

端口B数据寄存器GPBDAT用于读/写引脚GPIO44~GPIO32的状态。位与引脚的对应关系与GPBDIR一样。

模拟I/O数据寄存器AIODAT用于读/写AIO引脚AIO14~AIO2的状态。位与引脚的对应关系与AIODIR一样。

(6)位置1寄存器

位置1寄存器只能写。如果引脚配置成输出,则向寄存器中写1可以使该引脚输出为1即置1,写0没有影响。

端口A位置1寄存器GPASET用于设置引脚GPIO31~GPIO0的状态。位与引脚的对应关系与GPADIR一样。当寄存器某位为0时,则忽略。为1时,且引脚配置成输出,则输出变高。

端口B位置1寄存器GPBSET用于设置引脚GPIO44~GPIO32的状态。位与引脚的对应关系与GPBDIR一样。

模拟I/O位置1寄存器AIOSET用于设置引脚AIO14~AIO2的状态。位与引脚的对应关系与AIODIR一样。

(7)位清零寄存器

位清零寄存器只能写。如果引脚配置成输出,则向寄存器中写1可以使输出清零,写0没有影响。

端口A位清零寄存器GPACLEAR用于设置引脚GPIO31~GPIO0的状态。位与引脚的对应关系与GPADIR一样。当寄存器某位为0时,则忽略。为1时,且引脚配置成输出,则输出拉低。

端口B位清零寄存器GPBCLEAR用于清零引脚GPIO44~GPIO32的状态。位与引脚的对应关系与GPBDIR一样。

模拟I/O位清零寄存器AIOCLEAR用于清零引脚AIO14~AIO2的状态。位与引脚的对应关系与AIODIR一样。

(8)位翻转寄存器

位翻转寄存器GPxTOGGLE只能写。如果引脚配置成输出,则向寄存器中写1,可以使输出发生翻转,即原来为1则变为0,原来为0则变为1,写0没有影响。

端口A位翻转寄存器GPATOGGLE用于翻转引脚GPIO31~GPIO0的状态。位与引脚的对应关系与GPADIR一样。当寄存器某位为0时,则忽略。为1时,且引脚配置成输出,则输出翻转。

端口B位翻转寄存器GPBTOGGLE用于翻转引脚GPIO44~GPIO32的状态。位与引脚的对应关系与GPBDIR一样。

模拟I/O位翻转寄存器AIOTOGGLE用于翻转引脚AIO14~AIO2的状态。位与引脚的对应关系与AIODIR一样。

(9)中断选择寄存器

中断选择寄存器GPIOXINTnSEL(n=1~3),用于选择三个外部中断XINT1、XINT2、XINT3的来源引脚。寄存器的格式如下。

978-7-111-57271-8-Chapter02-116.jpg

位15~4,保留。

位4~0,GPIOXINTnSEL:这5位用于选择XINTn来源于端口A(GPIO0~GPIO31)的哪一个引脚。

00000:GPIO0作为XINTn中断来源(默认)。

00001:GPIO1作为XINTn中断来源。

11110:GPIO30作为XINTn中断来源。

11111:GPIO31作为XINTn中断来源。

(10)低功耗模式唤醒选择寄存器

低功耗模式唤醒选择寄存器GPIOLPMSEL用于选择端口A(GPIO31~GPIO0)哪些引脚可以将器件唤醒。寄存器GPIOLPMSEL的32位从高到低分别对应GPIO31~GPIO0引脚。当寄存器某位为0时,对应引脚信号对唤醒无影响;为1时,引对应脚信号可以将器件从HALT和STANDBY低功耗模式唤醒。

例2-4 GPIO初始化C语言程序的一个实例,可在主程序的上电初始化过程中调用该子程序。

978-7-111-57271-8-Chapter02-117.jpg

978-7-111-57271-8-Chapter02-118.jpg

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

我要反馈