每个GPI/O端口有两个32位配置寄存器(GPIOx_CRL,GPIOx_CRH),两个32位数据寄存器(GPIOx_IDR和GPIOx_ODR),一个32位置位/复位寄存器(GPIOx_BSRR),一个16位复位寄存器(GPIOx_BRR)和一个32位锁定寄存器(GPIOx_LCKR)。
GPIO端口的每个位可以由软件分别配置成多种模式。
1、输入浮空
2、输入上拉
3、输入下拉
4、模拟输入
5、开漏输出
6、推挽式输出
7、推挽式复用功能
8、开漏复用功能
每个I/O端口位可以自由编程,然而I/0端口寄存器必须按32位字被访问(不允许半字或字节访问)。GPIOx_BSRR和GPIOx_BRR寄存器允许对任何GPIO寄存器的读/更改的独立访问;这样,在读和更改访问之间产生IRQ时不会发生危险。
IO结构图
端口配置表
输出模式位
当I/O端口配置为输入时:
1、输出缓冲器被禁止
2、施密特触发输入被激活
3、根据输入配置(上拉,下拉或浮动)的不同,弱上拉和下拉电阻被连接
4、出现在I/O脚上的数据在每个APB2时钟被采样到输入数据寄存器
5、对输入数据寄存器的读访问可得到I/O状态
当I/O端口被配置为输出时:
1、输出缓冲器被激活
2、开漏模式:输出寄存器上的’0’激活N-MOS,而输出寄存器上的’1’将端口置于高阻状态(PMOS从不被激活)。
推挽模式:输出寄存器上的’0’激活N-MOS,而输出寄存器上的’1’将激活P-MOS。
3、 施密特触发输入被激活
4、弱上拉和下拉电阻被禁止
5、出现在I/O脚上的数据在每个APB2时钟被采样到输入数据寄存器
6、在开漏模式时,对输入数据寄存器的读访问可得到I/O状态
7、在推挽式模式时,对输出数据寄存器的读访问得到最后一次写的值
版权声明:本文为博主原创文章,未经博主允许不得转载。