STM32F10x中的端口寄存器
2020-09-22 来源:eefocus
GPIO(General Purpose Input Output)是通用输入/输出端口;
APB2ENR 高级外设总线(Andvaced Peripheral Bus)使能(Enable)寄存器;外设的对应位使能(置1)后,该外设才可以使用。
APB2RSTR 高级外设总线(Andvaced Peripheral Bus)复位(Reset)寄存器;当外设出现异常的时候可以通过复位寄存器里面的对应位设置,实现该外设的复位,然后重新配置这个外设达到让其重新工作的目的。一般在系统刚开始配置外设的时候,都会先执行复位该外设的操作。
GPIOx_CRL (x=A..E) 配置低(Config Low)寄存器
GPIOx_CRH (x=A..E) 配置高(Config High)寄存器、
MODEy[1:0]:端口x的模式位;软件通过这些位配置相应的I/O端口。
00:输入模式(复位后的状态)
01:输出模式,最大速度10MHz
10:输出模式,最大速度2MHz
11:输出模式,最大速度50MHz
CNFy[1:0]:端口x的配置位;软件通过这些位配置相应的I/O端口。
在输入模式(MODE[1:0]=00):
00:模拟输入模式
01:浮空输入模式(复位后的状态)
10:上拉/下拉输入模式
11:保留
在输出模式(MODE[1:0]>00):
00:通用推挽输出模式
01:通用开漏输出模式
10:复用功能推挽输出模式
11:复用功能开漏输出模式
GPIOx_IDR (x=A..E) 输入数据(Input Data)寄存器
IDRy[15:0]:端口输入数据;这些位为只读并只能以字(16位)的形式读出。读出的值为对应I/O口的状态。
GPIOx_ODR (x=A..E) 输出数据(Output Data)寄存器
ODRy[15:0]:端口输出数据;这些位可读可写并只能以字(16位)的形式操作。
注:对GPIOx_BSRR(x=A…E),可以分别地对各个ODR位进行独立的设置/清除。
GPIOx_BSRR(x=A..E) 位设置/清除(Bit Set/Reset)寄存器
BRy[15:0]: 清除端口x的位;这些位只能写入并只能以字(16位)的形式操作。
0:对对应的ODRy位不产生影响
1:清除对应的ODRy位为0
BSy[15:0]: 设置端口x的位;这些位只能写入并只能以字(16位)的形式操作。
0:对对应的ODRy位不产生影响
1:设置对应的ODRy位为1
注:如果同时设置了BSy和BRy的对应位,BSy位起作用。
GPIOx_BRR(x=A..E) 位清除(Bit Reset)寄存器
BRy[15:0]: 清除端口x的位;这些位只能写入并只能以字(16位)的形式操作。
0:对对应的ODRy位不产生影响
1:清除对应的ODRy位为0
GPIOx_LCKR(x=A..E) 配置锁定(Lock)寄存器
当执行正确的写序列设置了位16(LCKK)时,该寄存器用来锁定端口位的配置。位[15:0]用于锁定GPIO端口的配置。在规定的写入操作期间,不能改变LCKP[15:0]。当对相应的端口位执行了LOCK序列后,在下次系统复位之前将不能再更改端口位的配置。每个锁定位锁定控制寄存器(CRL, CRH)中相应的4个位。
LCKK:锁键(Lock Key);该位可随时读出,它只可通过锁键写入序列修改。
0:端口配置锁键位未激活
1:端口配置锁键位被激活,下次系统复位前GPIOx_LCKR寄存器被锁住。
锁键的写入序列:写1 -> 写0 -> 写1 -> 读0 -> 读1
最后一个读可省略,但可以用来确认锁键已被激活。
注:在操作锁键的写入序列时,不能改变LCK[15:0]的值。
操作锁键写入序列中的任何错误将不能激活锁键。
LCKy[15:0]: 端口x的锁位;这些位可读可写但只能在LCKK位为0时写入。
0:不锁定端口的配置
1:锁定端口的配置