在STM32中,复用推挽输出与浮空输入的作用是什么

在STM32中,复用推挽输出与浮空输入的作用是什么,第1张

推挽输出
带有驱动力,向外提供电流、电压
悬浮输入,是引脚内部上拉下拉电阻全部断开,引脚状态不确定,必须由外部确定,作为输入检测
具体请看用户手册,和芯片手册,上边有图说明,而且很清晰,看图就很容易理解了

关于STM32的USART配置,需要完成以下几个步骤
1,打开USART时钟
2,配置PA9及PA10
由于USART属于可选功能项
所以TX要设置成GPIO_Mode_AF_PP;,即复用推挽输出
RX用于数据输入,被设置成浮空输入
这是由于STM32的IO口引脚总共只有以下几种模式
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
对于特殊功能模式,只有一个复用开漏及复用推挽。
这两种都是用于输出的情况。
所以RX只能被设置成浮空输入
这不仅是USART,对于其他的如SPI也是如此。

好像没有时钟复用的概念,引脚复用时,需要设置相应的时钟,一般情况如下:
stm32引脚复用,以 CAN为例,
PA11(CANRx),PA12(CANTx)为默认复用引脚。
编程时,这样设置时钟
/外设时钟设置/
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO | RCC_APB2Periph_GPIOA, ENABLE);
RCC_APB1PeriphClockCmd(RCC_APB1Periph_CAN1, ENABLE);
PB8(CANRx),PB9(CANTx)为复用功能的重映射,编程时如下配置时钟:
/外设时钟设置/
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO | RCC_APB2Periph_GPIOB,ENABLE); //1
RCC_APB1PeriphClockCmd(RCC_APB1Periph_CAN1, ENABLE);//2
/IO设置/
GPIO_PinRemapConfig(GPIO_Remap1_CAN1, ENABLE);//3

当然可以,那你不用TIMx,就用SysTick吧,总之需要用1个定时器产生一个时间片计数器,用于延时
要不然的话,用循环延时的方法也可以产生PWM,那你的程序就只能产生PWM,不能做其他事了
另外如果对PWM的频率和占空比都不要求准确的话,那就可以通过简单的运行轮次计数就能产生,比如,你要50%占空比的PWM,你的大循环执行一轮大约1ms,那就偶数轮次输出1,奇数轮次输出0,可得大约500Hz,50%的PWM

1、第一个问题,GPIO_AF_Set 是对相应管脚的 复用功能 进行配置;具体是做寄存器及相关GPIO口的定位与赋值;
2、GPIO_TypeDef中的AFR[2] 对应于GPIOx_AFRL和GPIOx_AFRH寄存器 两个寄存器分别对GPIO的高低8个端口进行复位功能配置。AFR0[]---AFR7[]在GPIOx_AFRL中,对GPIOx0GPIOx7进行配置,AFR8[]---AFR15[]在GPIOx_AFRH中,同理对GPIOx8GPIOx15进行复用功能配置。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/13351858.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-07-20
下一篇 2023-07-20

发表评论

登录后才能评论

评论列表(0条)

保存