入门级STM32学习笔记(1)

GPIO(General Purpose Input Output)简介

  • GPIO(General Purpose Input Output)通用输入输出口
    可配置为8种输入输出模式
  • 引脚电平:0V~3.3V,部分引脚可容忍5V
  • 输出模式下可控制端口输出高低电平,用以驱动LED、控制蜂鸣器、模拟通信协议输出时序等
  • 输入模式下可读取端口的高低电平或电压,用于读取按键输入、外接模块电平信号输入、ADC电压采集、模拟通信协议接收数据等
  • GPIO基本结构

    GPIO基本结构
    每个GPIO都有16个引脚(0~15)
    内核可以通过APB2对寄存器读写,可以完成输出电平和读取电平的功能
    输出寄存器写1,对应引脚就会输出高电平,写0,就输出低电平
    输入寄存器读取为1,就证明对应的端口目前是高电平,读取为0,就是低电平

    GPIO位结构

    1.上拉和下拉输入模式:
    提供一个默认的输入电平,对与一个数字的端口,不是高电平就是低电平。如果输入什么都不接,那么输入就会处于一种浮空的状态(极易被改变状态),引脚的输入电平极易收到外界干扰而改变。
    上拉输入模式:默认高电平输入模式
    下拉输入模式:默认低电平输入模式

    2.施密特触发器:
    对电压进行整形,可以有效避免因信号波动造成的输出抖动的现象;如果输入电压大于 某一阈值,输出就会升为高电平,如果输入电压小于某一阈值,输出就会瞬间将为低电平

    3.推挽、开漏、关闭

    1. 推挽:P-MOS和N-MOS均有效。数据寄存器为1,上管导通,下管断开,输出直接接到VDD,输出高电平;数据寄存器为0,上管断开,下管导通,输出直接接到VSS,就是输出低电平。 这种模式下,高低电平均有较强的驱动能力,所以推挽输出模式也叫强推输出模式,在该模式下,STM32对IO口有绝对的控制权,高低电平都是由STM32说了算。
    2. 开漏:P-MOS输出无效,只有N-MOS在工作。数据寄存器位1,下管断开,这时输出相当于断开,也就是高阻模式;数据寄存器为0时下管导通,输出直接接到VSS,也即是输出低电平。 这种模式下只有低电平有驱动能力,高电平时没有驱动能力的。开漏模式可以作为通信协议的驱动方式,多机通信的情况下,该模式可以避免各个设备的相互干扰。也可输出5V电平信号
    3. 关闭:引脚配置为输入模式,两个MOS管均无效,也就是输出关闭,端口的电平由外部信号来控制

    4.如果通过输出数据寄存器进行控制,就是普通的IO口输出,
    写数据寄存器的某一位就可以操作某个端口

    5.位设置/清除寄存器,可以单独输出数据寄存器的某一位,而不影响其他位

    GPIO模式

    请添加图片描述

  • 上拉、下拉、浮空输入结构

  • 模拟输入

  • 开漏、推挽输出

    一个 端口只能有一个输出,但可以有多个输入

  • 复用开漏、推挽

    高电平弱驱动,低电平强驱动(一般单片机)

  • 操作STM32的GPIO一共需要3个步骤:

    1. 使用RCC开启GPIO时钟(最常用 RCC_AGB, RCC_APB2, RCC_APB1)
    2. 使用GPIO_init函数初始化时钟
    3. 使用输入或输出的函数控制GPIO口
      GPIO_Mode_AIN(Analog IN) 模拟输入
      GPIO_Mode_IN_FLOATING 浮空输入
      GPIO_Mode_IPD(In Pull Down) 下拉输入
      GPIO_Mode_IPU(In Pull Up) 上拉输入
      GPIO_Mode_Out_OD(Out Open Drain) 开漏输入
      GPIO_Mode_Out_PP(Out Push Pull) 推挽输出
      GPIO_Mode_AF_OD(Atl Open Drain) 复用开漏
      GPIO_Mode_AF_PP(Alt Push Pull) 复用推挽
      (他用推挽输出,但我没理解是啥意思)
      (这里气死我了,这个板子要超大力的摁在面包板上,才有反应)
      推挽输出高低电平都有驱动能力
      开漏输出仅有低电平由驱动能力

    作者:Lucky Ray

    物联沃分享整理
    物联沃-IOTWORD物联网 » 入门级STM32学习笔记(1)

    发表评论