STM32学习之GPIO

32单片机学习笔记----GPIO

1. GPIO是什么?有什么用?

  • GPIO,General Purpose Input Output,通用输入输出端口
  • 主要作用:
    • 输入:读取外部设备状态,如开关是否按下,传感器是否响应等;
    • 输出:通过高低电平信号控制外部设备状态,如控制小灯亮灭等;

2. GPIO特点

  • GPIO特点:
    • 不同型号芯片IO口数量有所差异;
    • 电平快速翻转,几个时钟周期内;
    • 每个IO口都可以做中断,每个IO引脚都可作为中断源,根据电平状态变化触发中断程序;
    • 八种工作模式,如常用的输入和输出模式,以及复用功能和模拟功能等;

3. GPIO八种工作模式

  • 每个GPIO端口都可以由软件配置成不同的工作模式,具体包括:

    • 浮空输入
    • 上拉输入
    • 下拉输入
    • 模拟输入
    • 开漏输出
    • 推挽输出
    • 开漏复用输出
    • 推挽复用输出
  • GPIO端口的基本结构
    IO口基本结构

  • 浮空输入

    • 输入驱动器中的上拉/下拉电阻都断开,外设IO引脚电平状态通过TTL肖特基触发器(或施密特触发器)保存至输入数据寄存器IDR(Input Data Register)中,CPU通过读取寄存器数据得知引脚状态,但该模式下IO引脚状态不确定(高阻态),除非外部配有上下拉电阻,否则应尽量避免使用该模式(模拟输入模式下会断开上下拉电阻,但同时也会关闭触发器和双MOS管),因此也就有了上拉/下拉输入模式。
  • 上拉输入

    • 可以理解为在浮空输入模式下将上拉电阻开关闭合,则此时外设IO引脚电平状态可知,CPU则可通过读取IDR数据准确得知IO引脚电平状态,通常会应用于上升沿/下降沿信号的检测;
  • 下拉输入

    • 与上拉输入相似,在浮空输入模式下将下拉电阻开关闭合;
  • 模拟输入

    • 该模式下,上下拉电阻和触发器开关均断开,因此CPU无法通过IDR读取IO电平状态,而是通过芯片内部的模拟信号电路,用于ADC(Analog Digital Converter),DAC等这些模拟信号外设;
  • 开漏输出

    • 在该模式下,CPU通过写入位设置/清除寄存器BSRR(Bit Set Reset Register)与输出数据寄存器ODR(Output data Register),或直接写ODR,控制输出控制电路的电平状态,进而控制NMOS管开关状态(PMOS管在该状态下没用到,处于截止状态,输出仅有NMOS控制),改变外设引脚IO电平状态。具体来说,若ODR输出为0,再经过反相器后得到1,通过输出控制电路后,NMOS管导通,此时外设IO被VSS拉低为低电平;而若ODR输出为1,经反相器得到0,通过输出控制电路后,NMOS管截止,处于高组态,与其连接的外设IO引脚状态由外部电路上拉电阻决定。因此,实际应用该模式时会外接上拉电阻来输出高电平,否则该模式只能输出低电平。此外,整个过程中,施密特触发器是开启的,即CPU可以通过IDR读取外设IO引脚状态;
  • 推挽输出

    • 该模式与开漏输出模式类似,不同之处在于开漏输出模式只用到了NMOS管,完全没用到PMOS管,而推挽输出模式二者都用到了。具体来说,ODR输出为0后经过反相器输出为1,PMOS管截止,NMOS管导通,外设IO引脚输出低电平;而ODR输出为1时经过反相器后为0,此时,PMOS管导通,NMOS管截止,外设引脚输出高电平;
  • 开漏复用输出

    • 该模式下,与开漏输出模式类似,仍通过输出控制电路控制NMOS管的通断改变IO引脚状态,不同之处在于,输出控制电路的输入不再是输出数据寄存器ODR,而是来自于其它片上外设,再通过复用功能输出给到输出控制电路。同样地,CPU仍能够通过输入数据寄存器IDR读取外设IO引脚状态;
  • 推挽复用输出

    • 该模式与开漏复用模式相似,输出控制电路的输入来自于其它片上外设
  • 27
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值