购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

2.4 GPIO端口寄存器

2.4.1 端口配置低8位寄存器(GPIO x _CRL, x =A~G)

GPIO x _CRL寄存器的功能是配置GPIO x 低8位端口(P x 7~P x 0)的工作模式和最大输出速度, x 可为A、B、C、D、E、F、G。GPIO x _CRL寄存器的偏移地址为0x00(GPIO x 端口的基地址+寄存器的偏移地址=寄存器的地址),复位值为0x4444 4444。

GPIO x _CRL寄存器有32位,各位功能说明如图2-5所示。以GPIOB的PB2端口为例,该端口的配置寄存器为GPIOB_CRL,其地址为0x4001 0C00(即GPIOB端口的基地址0x4001 0C00+寄存器的偏移地址0x00)。如果要配置PB2端口为2MHz的通用开漏输出模式,可将GPIOB_CRL寄存器的PB2端口配置位CNF2[1:0](即11、10位)的值设为01,将PB2端口的模式位MODE2[1:0](即9、8位)的值设为01。

图2-5 GPIO x _CRL寄存器说明

GPIO x _CRL寄存器的复位值为0x4444 4444,即端口复位后其配置位CNF y [1:0]的值为01,模式位MODE y [1:0]的值为00,端口的工作模式为浮空输入。

2.4.2 端口配置高8位寄存器(GPIO x _CRH, x =A~G)

GPIO x _CRH寄存器的功能是配置GPIO x 高8位端口(P x 15~P x 8)的工作模式和最大输出速度, x 可为A、B、C、D、E、F、G。GPIO x _CRH寄存器的偏移地址为0x04,复位值为0x4444 4444。

GPIO x _CRH寄存器的端口配置位CNF y [1:0]和模式位MODE y [1:0]与GPIO x _CRL寄存器功能相同,具体如图2-6所示。

图2-6 GPIO x _CRH寄存器说明

2.4.3 端口输入数据寄存器(GPIO x _IDR, x =A~G)

GPIO x _IDR寄存器的功能是存放16个端口(P x 15~P x 0)输入的数据, x 可为A、B、C、D、E、F、G。GPIO x _IDR寄存器的偏移地址为0x08,复位值为0x0000 XXXX(X值为1或0,与端口当时状态一致)。

GPIO x _IDR寄存器的高16位始终为0,低16位分别存放P x 15~P x 0端口输入的数据,如图2-7所示。以GPIOB的PB2端口为例,该端口的输入数据寄存器为GPIOB_IDR,其地址为0x4001 0C08(即GPIOB端口的基地址0x4001 0C00+寄存器的偏移地址0x08)。如果将PB2引脚接3.3V电压(高电平),那么GPIOB_IDR的IDR2位值为1。

图2-7 GPIO x _IDR寄存器说明

2.4.4 端口输出数据寄存器(GPIO x _ODR, x =A~G)

GPIO x _ODR寄存器的功能是存放16个端口(P x 15~P x 0)输出的数据, x 可为A、B、C、D、E、F、G。GPIO x _ODR寄存器的偏移地址为0x0C,复位值为0x0000 0000。

GPIO x _ODR寄存器的高16位始终为0,低16位分别存放P x 15~P x 0端口的输出数据,如图2-8所示。以GPIOB的PB2端口为例,该端口的输出数据寄存器为GPIOB_ODR,其地址为0x4001 0C0C。如果已将PB2引脚配置成输出模式,当向GPIOB_ODR中写入数据0x 0004时,ODR2位=1,PB2引脚会输出高电平。

图2-8 GPIO x _ODR寄存器说明

2.4.5 端口置位/复位寄存器(GPIO x _BSRR, x =A~G)

GPIO x _BSRR寄存器的功能是对16个端口(P x 15~P x 0)置位和复位, x 可为A、B、C、D、E、F、G。GPIO x _BSRR寄存器的偏移地址为0x10,复位值为0x0000 0000。

GPIO x _BSRR寄存器的高16位用于对P x 15~P x 0端口复位(清0),低16位用于对P x 15~P x 0端口置位(置1),如图2-9所示。以GPIOB的PB2端口为例,该端口的端口置位/复位寄存器为GPIOB_BSRR,其地址为0x4001 0C10。当向GPIOB_BSRR的BS2位写入1时,端口输出数据寄存器GPIOB_ODR的ODR2位会被置1,PB2引脚输出高电平;当向GPIOB_BSRR的BR2位写入1时,GPIOB_ODR的ODR2位会被复位清0,PB2引脚输出低电平。

图2-9 GPIO x _BSRR寄存器说明

2.4.6 端口清0寄存器(GPIO x _BRR, x =A~G)

GPIO x _BRR寄存器的功能是对16个端口(P x 15~P x 0)清0, x 可为A、B、C、D、E、F、G。GPIO x _BRR寄存器的偏移地址为0x14,复位值为0x0000 0000。

GPIO x _BRR寄存器的高16位始终为0,低16位用于对P x 15~P x 0端口清0,如图2-10所示。以GPIOB的PB2端口为例,该端口的端口清0寄存器为GPIOB_BRR,其地址为0x4001 0C14。当向GPIOB_BRR的BR2位写入1时,端口输出数据寄存器GPIOB_ODR的ODR2位会被清0,PB2引脚输出低电平。

图2-10 GPIO x _BRR寄存器说明

2.4.7 端口配置锁定寄存器(GPIO x _LCKR, x =A~G)

GPIO x _LCKR寄存器的功能是锁定16个端口(P x 15~P x 0)的配置, x 可为A、B、C、D、E、F、G。GPIO x _LCKR寄存器的偏移地址为0x18,复位值为0x0000 0000。

GPIO x _LCKR寄存器的高15位(位31~位17)始终为0,低16位(LCK15~LCK0)用于锁定端口配置寄存器GPIO x _CRH、GPIO x _CRL的值(1位锁定4位不变),位16(LCKK)为锁键,如图2-11所示。以锁定GPIOB的PB2端口配置为例,GPIOB的端口锁定寄存器为GPIOB_LCKR,其地址为0x4001 0C18。先向GPIOB_LCKR的LCK2位写入1,然后在LCKK位按顺序执行写序列操作:写入1→写入0→写入1→读出0→读出1。在执行写序列操作时,不能改变LCK15~LCK0的值。一旦某个GPIO端口配置被锁定,则只有再次复位GPIO端口(由复位与时钟控制器RCC管理)才能解锁。

图2-11 GPIO x _LCKR寄存器说明 zDB7mV2/5dSVJtTs+dHcpPpCtkZOGopS+j+pXAusxOKnNMhfMRkfILiZJhE8NPZA

点击中间区域
呼出菜单
上一章
目录
下一章
×