STM32F3 GPIO的八种模式及工作原理 (2)

推挽输出模式(带上拉)

STM32F3 GPIO的八种模式及工作原理


注意:在推挽输出模式时,N-MOS管和P-MOS管都工作,如果控制输出为0,则P-MOS管关闭,N-MOS管导通,若控制输出为1,则P-MOS管导通N-MOS管关闭。

复用开漏输出

STM32F3 GPIO的八种模式及工作原理


注意:复用开漏输出下,GPIO复用为其他外设,输出数据寄存器GPIOx_ODR无效; 输出的高低电平的来源于其它外设,

复用推挽输出(带上拉)

STM32F3 GPIO的八种模式及工作原理


注意:复用推挽输出下,GPIO复用为其他外设,输出数据寄存器GPIOx_ODR无效; 输出的高低电平的来源于其它外设,
输出模式下施密特触发器是打开的,所以mcu是可以读取到I/O口的实际状态。

开漏输出和推挽输出的区别:
推挽输出:可以输出强高低电平,连接数字器件,推挽结构一般是指两个三极管分别受两互补信号的控制,总是在一个三极管导通的时候另一个截止。
开漏输出:可以输出强低电平,高电平得靠外部电阻拉高,才能实现输出高电平,适合用做电流型的驱动,其吸收电流的能力相对强(一般20ma以内)。

F4系列与F1系列区别:
本质上的区别是F4系列采用了Cortex-M4内核 而F1系列采用Cortex-M3内核
F1系列(M3)IO口基本结构:

STM32F3 GPIO的八种模式及工作原理


F4系列(M4)IO口基本结构:

STM32F3 GPIO的八种模式及工作原理

四、 寄存器介绍

STM32 的每个 IO 端口都有 7 个寄存器来控制,他们分别是:配置模式的 2 个 32 位的端口配置寄存器 CRL 和 CRH;2 个 32 位的数据寄存器 IDR 和 ODR;1 个 32 位的置位/复位寄存器BSRR;一个 16 位的复位寄存器 BRR;1 个 32 位的锁存寄存器 LCKR;这里我们仅介绍常用的几个寄存器,我们常用的 IO 端口寄存器只有 4 个:CRL、CRH、IDR、ODR。

配置模式CRL和CRH寄存器

STM32F3 GPIO的八种模式及工作原理


从图中可以看出配置GPIO的模式需要4位进行配置,分辨是两位CNFy和两位MODEy进行配置,因为每组GPIO都有16个引脚,而STM32是32位的,所以一个寄存器无法完成一组GPIO的配置,其中CRL配置 0 ~ 7 引脚,CRH配置 8 ~ 15 引脚。

比如我们要设置 PORTB 的 12 位为推挽输出 ,5 位为上拉输入。

//配置PB5为上拉输入 GPIOB->CRH &= 0XFF0FFFFF; //清掉这5引脚位原来的设置,同时也不影响其他位的设置 GPIOB->CRH |= 0X00800000; // 配置PB5上拉输入 GPIOB->ODR= 1<<5; //PB5 上拉 //配置PB12为推挽输出 GPIOB->CRH &= 0XFFF0FFFF; //清掉这12引脚位原来的设置,同时也不影响其他位的设置 GPIOB->CRH |= 0X00030000; // 配置PB12推挽输出

端口输入数据寄存器IDR

STM32F3 GPIO的八种模式及工作原理

端口输出数据寄存器ODR

STM32F3 GPIO的八种模式及工作原理

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zzfgwg.html