【stm32f103】认识GPIO

认识GPIO

  • 什么是GPIO
  • GPIO基本结构
    • 保护二极管
    • 输出模式
      • 推挽输出
      • 开漏输出
    • 输出数据寄存器(参考手册8.2)
      • GPIOx_ODR
      • GPIOx_BSRR
    • 输入模式
  • GPIO输出初始化顺序

什么是GPIO

通用输入输出端口,也就是软件可以控制的引脚。stm32芯片通过GPIO引脚与外部设备连接起来,实现与外部通讯,控制,以及数据采集的功能。

GPIO基本结构

【stm32f103】认识GPIO_第1张图片

保护二极管

【stm32f103】认识GPIO_第2张图片
两个保护二级管可以防止引脚外部过高或过低的电压输入,当引脚电压高于VDD时,上方的二极管导通,当引脚电压低于 VSS时,下方的二极管导通,防止不正常电压引入芯片导致芯片烧毁。

输出模式

经过两个二极管的保护电路,向上进入输入模式,向下进入输出模式。
由P-MOS和N-MOS组成的输出电路,可以使GPIO具有推挽输出以及开漏输出两种模式。
【stm32f103】认识GPIO_第3张图片

推挽输出

通过输出数据寄存器ODR,输出1或0。不同的状态分别会让一个MOS导通,变成形式上的上下拉电阻,形成较稳定的3.3v以及0v的输出。
【stm32f103】认识GPIO_第4张图片

开漏输出

只输出低电平,P-MOS不工作,只有N-MOS工作。如果需要输出高电平,需要外接上拉电阻。
【stm32f103】认识GPIO_第5张图片除了必须用开漏模式的场合,我们都习惯使用推挽输出模式。开漏输出一般应用在 I2C等需要“线与”功能的总线电路中。还用在电平不匹配的场合,如需要输出 5 伏的高电平,就可以在外部接一个上拉电阻,上拉电源为 5伏,并且把 GPIO 设置为开漏模式,当输出高阻态时,由上拉电阻和电源向外输
出 5 伏的电平。

输出数据寄存器(参考手册8.2)

可以通过GPIOx_ODR寄存器进行直接操作,也可以通过GPIOx_BSRR寄存器对ODR进行间接操作。
【stm32f103】认识GPIO_第6张图片

GPIOx_ODR

ODR寄存器低十六位有效,可以对各个位进行置位或复位操作。
(置位:|= 清零:&=~)
【stm32f103】认识GPIO_第7张图片

GPIOx_BSRR

低十六位置位操作
高十六位复位操作(都是通过输入1进行操作)
【stm32f103】认识GPIO_第8张图片

输入模式

GPIO 引脚经过内部的上、下拉电阻,可以配置成上/下拉输入,浮空输入。
【stm32f103】认识GPIO_第9张图片

然后再连接到施密特触发器,信号经过触发器后,模拟信号转化为 0、1 的数字信号,存储在“输入数据寄存器 GPIOx_IDR”中,通过读取该寄存器就可以了解 GPIO引脚的电平状态。

1 // 读取 GPIOB 端口的 16 位数据值
2 uint16_t temp;
3 temp = GPIOB->IDR;

GPIO输出初始化顺序

1.选定具体GPIO
2.配置GPIO工作模式(CRL,CRH寄存器)
3.控制GPIO输出高低电平(ODR,BSRR,BRR寄存器)

你可能感兴趣的:(stm32学习日记,stm32,单片机)