|
kbwltiohw5w640905021.gif
p! P2 R: x1 `- K" t+ M8 R7 W在STM32中,推挽输出(Push-Pull Output)和复用推挽输出(Alternate Function Push-Pull)是GPIO的两种工作模式,它们的核心区别在于引脚的用途和控制权。
1 a7 b/ d" A! c; Q3 _4 |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; // 复用推挽模式% w; O1 {) n: ~- Y
GPIO_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())示例场景推挽输出:
7 R0 k1 D( D% d4 @% U2 x, t9 T控制LED闪烁:
+ }. y! f; \' \HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, GPIO_PIN_SET); // PA5输出高电平复用推挽输出:
' w8 V. f. |, {配置USART1发送数据(PA9为USART1_TX):
. M" n( C) m' Z$ Q// 初始化GPIO为复用推挽模式
4 \, a. M, H9 E x; n# }' CGPIO_InitStruct.Pin = GPIO_PIN_9;
6 ?$ G; y1 N/ t2 ?( n1 eGPIO_InitStruct.Mode = GPIO_MODE_AF_PP;. K' q- ^8 |- x5 _; T: {
GPIO_InitStruct.Alternate = GPIO_AF7_USART1; // 绑定USART1功能
, o1 d2 O! `4 L7 `// 初始化USART外设
0 i7 A6 Y+ V3 a" {+ ^! @7 K3 uHAL_UART_Transmit(&huart1, data, len, timeout); // 数据由硬件自动发送8 _" d! z* @7 S5 Y
[/ol]常见问题复用推挽是否需要使能外设时钟?9 g* O9 B) p5 U8 l L8 I7 k. Y
是的!需同时使能GPIO和外设的时钟(如__HAL_RCC_USART1_CLK_ENABLE())。推挽和开漏输出的区别?
9 g& n8 b) }: i( f& [ z& ]+ L: J' [3 n/ a推挽可输出高/低电平,开漏(Open-Drain)只能输出低电平或高阻态,需外部上拉电阻。如何查找引脚的复用功能?9 g" d" I' c+ g. i% }
参考STM32芯片数据手册的Alternate Function Mapping表格。4 x. q: b* B0 d' f3 T5 F
[/ol] $ t" l5 l& ~* V+ B3 {; L7 p0 j- E
声明:
' h) ~1 `# [8 D4 K% {9 I( I1 c" x本文转载自Passion嵌入式公众号,如涉及作品内容、版权和其它问题,请联系工作人员微(13237418207),我们将在第一时间和您对接删除处理!投稿/招聘/广告/课程合作/资源置换请加微信:13237418207. _ D+ ~! [# M6 v8 |5 G
4 v7 i: c# X4 }9 g6 x) g; i' o
mprms23pkan640905121.jpg
7 s4 B' g$ Z& c3 \0 z; D【初学者必备】50份pcb设计DFM可制造性分析资料
1 j7 N1 u7 w7 x$ g2 }2 ^3 Y: W) F4 w/ y4 n; Y! B% M
jr1btygci4p640905221.jpg
) {% y" Q% _: L, L+ v( W, p9 W阻抗、电抗、容抗和感抗的区别和联系,你真的懂吗?
- Z& q- W) S7 Y t- M$ ?7 A# d
9 }+ H0 y9 S' z1 K9 E
ill1xvyv0dh640905321.jpg
# M% B' e4 |* ?6 J- m: i7个维度解析电源损耗:同步Buck,为何Vin越小,电源效率越高?
6 D! S) r6 T9 j8 P- m* [/ C$ ^: R7 I) y ]2 B2 Z \0 _
% A5 P7 U4 G, ?- Q3 {
+ Q( Z6 p% |! A
j1ji4kmr5c5640905421.png
) g) r2 g$ R0 x+ L" I- Q
扫码添加客服微信,备注“入群”拉您进凡亿教育官方专属技术微信群,与众位电子技术大神一起交流技术问题及心得~
! Y* I; P* \( M n9 i- q分享 点赞 在看?? “三连”支持! |
|