? STM32的每个Px端口都有四种7个寄存器来控制,分别是:
2个32位的端口输入输出模式寄存器CRL、CRH
2个32位的数据寄存器IDR、ODR
1个32位的置位/复位寄存器BSRR、1个16位的复位寄存器BRR
1个32位的锁存寄存器LCKR
常用的就是前两种
CRL、CRH
? 这两个寄存器一共由64位,每个小口占4位,每个大口有16个小口,刚好够用,下面来说一下这4位是怎么用的: ?
| ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? CNF[1:0] | MODE[1:0] | | 输入模式? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 输出模式 | | 00 | 模拟输入? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 推挽 GPIO_Mode_AIN? ? ? ? ? ? ? ? ? ? ? ?GPIO_Mode_Out_PP | 输入模式(复位后的状态) | 01 | 浮空输入?(复位后的状态) ? ? ? ? ? ?开漏 GPIO_Mode_IN_FLOATING? ? ??GPIO_Mode_Out_OD | 输出,10MHz | 10 | 上拉下拉? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?复用推挽 GPIO_Mode_IPU/IPD? ? ? ? ? ? ? ? ?GPIO_Mode_AF_PP | 输出,2MHz | 11 | 保留? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 复用开漏 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??GPIO_Mode_AF_OD | 输出,540MHz |
IRD
??IDR 是一个端口输入数据寄存器,只用了低 16 位。该寄存器为只读寄存器,并且只能以 16 位的形式读出。在输出状态下,也可以读出。
ORD
??ODR 是一个端口输出数据寄存器,也只用了低 16 位,可读可写。在输入状态下,0表示下拉输入,1表示上拉输入。
|