欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

STM32 IO口的八种模式使用小结

发布时间:2025/3/15 编程问答 58 豆豆
生活随笔 收集整理的这篇文章主要介绍了 STM32 IO口的八种模式使用小结 小编觉得挺不错的,现在分享给大家,帮大家做个参考.
/** * @brief Configuration Mode enumeration */typedef enum { GPIO_Mode_AIN = 0x0, //模拟输入GPIO_Mode_IN_FLOATING = 0x04, //浮空输入GPIO_Mode_IPD = 0x28, //下拉输入GPIO_Mode_IPU = 0x48, //上拉输入GPIO_Mode_Out_OD = 0x14, //开漏输出GPIO_Mode_Out_PP = 0x10, //推挽输出GPIO_Mode_AF_OD = 0x1C, //复用开漏输出GPIO_Mode_AF_PP = 0x18 //复用推挽输出 }GPIOMode_TypeDef;
  • 推挽输出
  • :可以输出高电平,也可以输出低电平,结构是两个三极管分别受两个互补信号的控制,总是在一个三极管导通的时候另一个截止,高电平由IC电源确定;
    推挽电路是两个参数相同的三极管或MOSFET,以推挽的方式存在于电路中,各负责正负半周的波形放大任务,电路工作时两只对称的功率开关管每次只有一个导通,所以损耗小效率高,输出既可以向负载灌电流也可以向负载抽取电流;

    • 开漏输出
      输出端相当于三极管的集电极,要得到高电平状态需要使用上拉电阻才行,适用于做电流型的驱动,其吸收能力相对较强(一般20ma以内)
      开漏的特点:
      利用外部电流的驱动能力,减少IC内部的驱动,当IC内部的MOSFET导通的时候,驱动电流是从外部的VCC流经 R pull-up,MOSFET到GND。IC内部仅需要很小的栅极驱动电流。
      一般来说 开漏是用来连接不同电平的元器件,匹配电平使用的。因为开漏输出的引脚在不连接外部的上拉电阻的时候,只能输出低电平,如果需要同时具备输出高电平的功能需要加上上拉电阻,很好的一个有点就是可以通过改变上拉电源的电压,便可以改变输出电平,比如加上上拉电阻就可以提供TTL/CMOS电平的输出等,(上拉电阻的组织决定了逻辑电平转换速度,阻值越大,速度越低功耗越小,所以负载电阻的阻值要结合实际情况选优);
      OPEN-DRAIN 提供了灵活的输出方式,但是也有弱点,就是在上升沿的时候会有延时,因为上升沿是通过外接无源上拉电阻对负载进行充电实现的,所以当电阻选择小的时候延时就小,但是功耗大,反之延时大功耗小,如果对延时有要求,则建议使用下降沿输出。
      可以将多个开漏输出的Pin,连接到一条线上,通过一个上拉电阻,在不增加任何器件的情况下,形成”与逻辑”关系。这也是I2C,SMBus等总线判断总线占用的原理;

    • 浮空输入
      由于浮空输入一般多用于外部按键输入,在浮空输入的状态下,IO口的电平状态是不确定的,如果在该引脚悬空的,读取端口的电平状态是不确定的

    • 复用开漏输出、复用推挽输出:可以理解为GPIO被作为第二功能使用的时候的配置情况;

    • 总结:
    • 浮空输如:可以做Key识别 ,RX
    • 上拉输入 内部有上电阻
    • 下拉输入 内部有下拉电阻
    • 模拟输入 应用ADC模拟输入,或者低电平状态下有电
    • 开漏输出 IO口输出0接地 IO口输出1 悬空 需要上拉电阻才能实现输出高电平,可以读取IO输入电平的变化实现C51的IO的双向功能;
    • 推挽输出 IO输出0接地 IO输出1接VCC 读输入值是未知的
    • 复用功能推挽输出 片内外设功能 (I2C的SCL,SDA USART TX)
    • 复用开漏输出 片内外设功能 (TX1,MOSI,MISO,SCK,SS)

    使用的实例:
    模拟I2C使用开漏输出的时候,接上拉电阻,能够实现0和1的输出,读值的时候先GPIO_SetBits(GPIOB,GPIO_Pin_0); 拉高,然后在读取IO口的值,GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_0);

    如果无上拉电阻,IO口默认是高电平;需要读取IO口的值,可以使用带上拉电阻的IPU和浮空输入和开漏输出

    通常的五种方法使能一个引脚的IO口,作为普通GPIO输入输出:根据需要配置引脚,同时不要使能该引脚的多有的复用功能模块
    作为普通模拟输入:配置该IO口为模拟输入模式,同时不要使能该引脚对应的所有的复用功能模块
    作为内置外设的输入的设置:根据需要配置该引脚为 浮空输入 带弱上拉输入或者带弱下拉输入,同时使能该引脚对应的某个复用功能模块;
    作为内置外设输出:根据需要配置该引脚为复用推挽输出或则复用开漏输出,同时使能该引脚对用德尔复用功能模块

    总结

    以上是生活随笔为你收集整理的STM32 IO口的八种模式使用小结的全部内容,希望文章能够帮你解决所遇到的问题。

    如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。