STM32 PWM 输出绑定与解除 GPIO电平的变化

STM32捕获/比较使能寄存器如上,可见位5控制了通道2的PWM输出绑定到对应的GPIO口,

0:关闭 - OCx,禁止输出

1:开启 - OCx,信号输出到对应的输出脚

那么问题来了,我们在进行PWM初始化的时候,使用如下代码,将输出脚设置为复用推挽输出,当使能PWM输出时,引脚电平由PWM控制,但是禁止PWM输出时,引脚电平是什么状态呢?

    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_Init(GPIOA, &GPIO_InitStructure);

我们使用如下代码测试,

	for(;;)
	{
		//禁止PWM输出
		TIM3 -> CCER  &= 0XFFEF;
		delay_ms(50);
		//打开PWM输出
		TIM3 -> CCER  |= 1 << 4;
		delay_ms(50);
	}

PWM初始化配置导致PWM输出时一直为高电平,如下波形,PWM输出50ms高电平,50ms低电平,So,当PWM输出被禁止时,其对应的输出引脚为低电平。

另外,将PWM输出极性翻转,也就是PWM输出时一直为低电平,此时的波形如下,一直为低电平,说明PWM禁止输出时,引脚电平与PWM输出极性无关,为低电平。

 

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
stm32是一款常用的微控制器,支持通过PWM模块实现互补输出,并且可以通过调整占空比来控制输出信号的电平PWM输出又称脉冲宽度调制输出,它是通过调整脉冲的电平时间和低电平时间的比例来实现模拟信号的一种方法。 在stm32中,可以通过使能PWM输出的互补模式来得到一个互补的PWM信号。互补输出意味着有两个相反的PWM信号同时输出,一个是正相位的PWM信号,另一个是反相位的PWM信号。 要调整PWM输出的占空比,可以通过改变PWM信号的电平时间和周期时间来实现。 首先,我们需要配置PWM输出模块的基本参数,如PWM周期,分辨率等。在stm32中,可以使用CubeMX来生成相应的配置代码,也可以手动编写配置代码进行配置。 然后,根据具体的需求,可以通过编程的方式修改PWM的占空比。stm32提供了相应的寄存器用于设置PWM的脉冲宽度。 例如,使用TIMx_CCRx寄存器来设置PWM的占空比,其中x表示相应的PWM通道,CCR表示脉冲宽度寄存器。可以通过改变该寄存器的值来改变PWM输出的占空比。 具体的操作步骤是:首先使能PWM输出,然后在适当的时机改变相关寄存器的值,以改变占空比。最后需要更新PWM输出状态,使改变生效。 综上所述,我们可以通过适当地配置和改变PWM输出的相关寄存器的值,来实现stm32PWM互补输出,并通过调整占空比来控制输出信号的电平
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值