硬汉嵌入式论坛

 找回密码
 立即注册
查看: 443|回复: 3
收起左侧

[有问必答] PWM模式输出方波

[复制链接]

57

主题

88

回帖

259

积分

高级会员

积分
259
发表于 2023-10-17 10:30:37 | 显示全部楼层 |阅读模式
大家好:

使用STM32定时器的PWM模式,输出方波(1KHz),减计数模式,TIM1_ARR定义了方波频率,TIM1_CCR4定义了占空比,当TIM1_CCR4不为0时,输出方波的是正常时,如果TIM1_CCR4=0,理论上是不是不会有脉冲输出的,是吧?但实际上还是有很小的脉冲宽度输出,这个怎么解决呢?

谢谢!
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106757
QQ
发表于 2023-10-17 10:37:53 | 显示全部楼层
设置为0,直接配置高低电平。

        if (_ulDutyCycle == 0)
        {               
                //bsp_RCC_TIM_Disable(TIMx);                /* 关闭TIM时钟, 可能影响其他通道 */               
                bsp_ConfigGpioOut(GPIOx, GPIO_Pin);        /* 配置GPIO为推挽输出 */                       
                HAL_GPIO_WritePin(GPIOx, GPIO_Pin, GPIO_PIN_RESET);        /* PWM = 0 */
                return;
        }
        else if (_ulDutyCycle == 10000)
        {
                //bsp_RCC_TIM_Disable(TIMx);                /* 关闭TIM时钟, 可能影响其他通道 */
                bsp_ConfigGpioOut(GPIOx, GPIO_Pin);        /* 配置GPIO为推挽输出 */               
                HAL_GPIO_WritePin(GPIOx, GPIO_Pin, GPIO_PIN_SET);        /* PWM = 1 */
                return;
        }
回复

使用道具 举报

57

主题

88

回帖

259

积分

高级会员

积分
259
 楼主| 发表于 2023-10-17 11:27:14 | 显示全部楼层
eric2013 发表于 2023-10-17 10:37
设置为0,直接配置高低电平。

        if (_ulDutyCycle == 0)

版主的意思是在0%和100%占空比时,将输出设置成I/O口,其它情况下才使用PWM模式,是么?
这样好像可以,但这是不是stm32的一个bug。

谢谢!
回复

使用道具 举报

22

主题

67

回帖

133

积分

初级会员

积分
133
发表于 2023-10-18 17:15:54 | 显示全部楼层
可以加个电容电阻RC滤波
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-4 15:39 , Processed in 0.265282 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表