|

kbwltiohw5w640905021.gif
# O( U, X. K+ n' V4 A7 Y# y( J& }3 v- i
在STM32中,推挽输出(Push-Pull Output)和复用推挽输出(Alternate Function Push-Pull)是GPIO的两种工作模式,它们的核心区别在于引脚的用途和控制权。" q. m/ R% i6 [/ n5 `
1. 推挽输出(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; // 复用推挽模式
) i" q* F% b6 E+ v1 ?4 \, ?% zGPIO_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())示例场景推挽输出:
, s2 S6 j7 Z' q7 Y3 D/ g' `控制LED闪烁:" l, c0 G( r$ h2 [) D6 u& i& V% ]9 j4 H
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, GPIO_PIN_SET); // PA5输出高电平复用推挽输出:- l& { E$ p8 N' [- ^7 D
配置USART1发送数据(PA9为USART1_TX):" c; x& P/ d) [2 \- R0 c
// 初始化GPIO为复用推挽模式
; Y+ ]1 U- h% y/ o( b: @GPIO_InitStruct.Pin = GPIO_PIN_9;
/ k5 s* R! W! }0 U8 nGPIO_InitStruct.Mode = GPIO_MODE_AF_PP; b" @. p' ^2 L" D
GPIO_InitStruct.Alternate = GPIO_AF7_USART1; // 绑定USART1功能
: Z$ e) H0 |" I; U0 A$ G# V8 @// 初始化USART外设( i5 D: v- g; K; o
HAL_UART_Transmit(&huart1, data, len, timeout); // 数据由硬件自动发送. j+ z9 R/ { b! A, F" z/ `7 d
[/ol]常见问题复用推挽是否需要使能外设时钟?
7 d) o) ]/ V/ ~是的!需同时使能GPIO和外设的时钟(如__HAL_RCC_USART1_CLK_ENABLE())。推挽和开漏输出的区别?) K$ E" d) n8 o( i
推挽可输出高/低电平,开漏(Open-Drain)只能输出低电平或高阻态,需外部上拉电阻。如何查找引脚的复用功能?2 W6 H4 \& y: I9 j6 G: Y# m
参考STM32芯片数据手册的Alternate Function Mapping表格。
3 I; S- h9 Y8 J* Q1 @[/ol] ) d5 C5 ~- M( b) h8 f. [
声明:
( {% P- O* ^1 H4 M, ?% u本文转载自Passion嵌入式公众号,如涉及作品内容、版权和其它问题,请联系工作人员微(13237418207),我们将在第一时间和您对接删除处理!投稿/招聘/广告/课程合作/资源置换请加微信:13237418207% [5 Y: y) L$ R$ s; h4 C2 E& u
) ?2 f9 n9 v, r
mprms23pkan640905121.jpg
' J) j% b. R `4 G6 G, g, q
【初学者必备】50份pcb设计DFM可制造性分析资料
8 r7 C. X( L; e' v J! N0 K$ f q+ ]9 {
jr1btygci4p640905221.jpg
0 L; j. c, k) E O阻抗、电抗、容抗和感抗的区别和联系,你真的懂吗?, H$ s5 U' h- A) J; r) y0 b
" p* T: e% G: X) T% f
ill1xvyv0dh640905321.jpg
$ D2 o' _) P+ m# w7个维度解析电源损耗:同步Buck,为何Vin越小,电源效率越高?
5 v0 R [1 ^$ ^' w3 A p0 {# k2 d4 a% Z6 l2 f
5 M2 R7 U3 q3 v& l1 I) R1 R
. U% [# m1 Q5 X; }
j1ji4kmr5c5640905421.png
: [5 d4 m) z. Y; {4 O% n
扫码添加客服微信,备注“入群”拉您进凡亿教育官方专属技术微信群,与众位电子技术大神一起交流技术问题及心得~7 `9 k/ p+ K; ~) d5 U! J
分享 点赞 在看?? “三连”支持! |
|