电子产业一站式赋能平台

PCB联盟网

搜索
查看: 13|回复: 0
收起左侧

STM32中,推挽输出和复用推挽输出的区别

[复制链接]

818

主题

818

帖子

7235

积分

高级会员

Rank: 5Rank: 5

积分
7235
发表于 昨天 07:30 | 显示全部楼层 |阅读模式

kbwltiohw5w640905021.gif

kbwltiohw5w640905021.gif

1 t- Q. D( m& Q1 }+ K) x  S在STM32中,推挽输出(Push-Pull Output)复用推挽输出(Alternate Function Push-Pull)是GPIO的两种工作模式,它们的核心区别在于引脚的用途和控制权
; a: G; P& G; v% }" d7 A1. 推挽输出(Push-Pull Output)
  • 用途:通用GPIO输出模式,由用户直接控制引脚电平。
  • 控制权:用户通过操作GPIO的输出数据寄存器(如GPIOx_ODR)控制高低电平。
  • 配置方式:GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; // 推挽输出模式
  • 特点
  • 引脚可以主动输出高电平(上拉PMOS导通)或低电平(下拉NMOS导通)。
  • 驱动能力强,适合驱动LED、继电器等外设。
  • 用户需手动操作GPIO寄存器(如HAL_GPIO_WritePin())。2. 复用推挽输出(Alternate Function Push-Pull)
  • 用途:将引脚分配给特定外设(如SPI、I2C、UART等),由外设硬件自动控制。
  • 控制权:外设模块(如USART、TIMER)自动控制引脚电平,用户无需手动操作GPIO。
  • 配置方式:GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;       // 复用推挽模式
    5 l+ z6 z( a* E/ A. o5 VGPIO_InitStruct.Alternate = GPIO_AFx_USART1; // 选择复用功能(如USART1)
  • 特点
  • 引脚电平由外设硬件自动生成(如UART发送数据时自动输出高低电平)。
  • 用户需配置外设参数(如波特率、时钟频率),而非直接操作GPIO。
  • 必须与对应的外设功能绑定(如PA9映射为USART1_TX)。核心区别总结特性推挽输出(Push-Pull)复用推挽输出(Alternate Function Push-Pull)控制权用户通过代码直接控制由外设硬件自动控制(如USART、SPI)应用场景通用IO控制(LED、按键等)外设通信(UART发送、SPI时钟信号等)配置重点设置GPIO为输出模式绑定复用功能和外设参数(Alternate Function)代码操作HAL_GPIO_WritePin()外设初始化(如HAL_UART_Init())示例场景
  • 推挽输出
    # m8 M7 ?& f: W7 L# P控制LED闪烁:+ H8 j; J* t- G/ }" Q9 C
    HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, GPIO_PIN_SET); // PA5输出高电平
  • 复用推挽输出# I+ X) ^# n: s8 F, `
    配置USART1发送数据(PA9为USART1_TX):
    / w3 H" F. U8 @$ B3 E// 初始化GPIO为复用推挽模式
    $ h* e. l6 i- `/ h0 TGPIO_InitStruct.Pin = GPIO_PIN_9;
    ) S* _0 d, c! O( w+ PGPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
    % c% u9 _8 ^9 q# s) yGPIO_InitStruct.Alternate = GPIO_AF7_USART1; // 绑定USART1功能, H& f6 a( h% x0 T7 m. r* S
    // 初始化USART外设
    : ?8 {& t$ J. vHAL_UART_Transmit(&huart1, data, len, timeout); // 数据由硬件自动发送
    0 ?1 p% E8 w$ f! V' o[/ol]常见问题
  • 复用推挽是否需要使能外设时钟?
    9 ?. E$ X/ {5 @# r& `% h是的!需同时使能GPIO和外设的时钟(如__HAL_RCC_USART1_CLK_ENABLE())。
  • 推挽和开漏输出的区别?
    8 t& N7 h3 b; h1 H* C5 u推挽可输出高/低电平,开漏(Open-Drain)只能输出低电平或高阻态,需外部上拉电阻。
  • 如何查找引脚的复用功能?8 h; I2 Z: H" X: R
    参考STM32芯片数据手册的Alternate Function Mapping表格。
    1 h. @; y; F- O1 d0 [[/ol] . |2 J- c$ ?- N9 b
    声明:
    ) J. a+ i6 b- A本文转载自Passion嵌入式公众号,如涉及作品内容、版权和其它问题,请联系工作人员微(13237418207),我们将在第一时间和您对接删除处理!投稿/招聘/广告/课程合作/资源置换请加微信:13237418207
    / ]3 q( j' \( x% g* U1 A6 ^* b8 b! Q; q, B

    mprms23pkan640905121.jpg

    mprms23pkan640905121.jpg
    7 O0 Y9 @+ g, Y
    【初学者必备】50份pcb设计DFM可制造性分析资料3 F! ]% K; Q! T  H7 n
    ; `" T7 v: i: s  y% k9 I* [6 [

    jr1btygci4p640905221.jpg

    jr1btygci4p640905221.jpg
    " o+ }1 P# L. [. W* X
    阻抗、电抗、容抗和感抗的区别和联系,你真的懂吗?5 `, k% I7 W8 A, o

    " Z) f$ ^0 r* o! N: ?# q) r

    ill1xvyv0dh640905321.jpg

    ill1xvyv0dh640905321.jpg
    9 p- V/ C6 F5 |# |
    7个维度解析电源损耗:同步Buck,为何Vin越小,电源效率越高?5 Z, o- {: p5 b. M4 ~, E8 v

    $ w8 }+ R1 N2 H+ K* D
    ! E3 Y6 i% Z* {5 ^* ^6 z# r: }( p' m5 k, k: D

    j1ji4kmr5c5640905421.png

    j1ji4kmr5c5640905421.png
    ; }( n( J2 x. ~: g. _
    扫码添加客服微信,备注“入群”拉您进凡亿教育官方专属技术微信群,与众位电子技术大神一起交流技术问题及心得~
    * y3 o! H7 p4 n! o分享 点赞 在看?? “三连”支持!
  • 回复

    使用道具 举报

    发表回复

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则


    联系客服 关注微信 下载APP 返回顶部 返回列表