CH571 定时器输出PWM波,关闭后,默认电平问题
问题:使用CH573 的TMR2输出PWM波,控制无源蜂鸣器,当关闭TMR2的PWM输出时,关闭后的引脚电平随机,强制拉低也不行。

之前使用STM32的时候也有这个问题,网上很多解决办法,但是CH571的没有搜索到,请赐教,谢谢。
    //PWM配置
    GPIOA_ModeCfg(GPIO_Pin_11, GPIO_ModeOut_PP_20mA);
    GPIOA_ResetBits(GPIO_Pin_11); // BEEP控制线拉低
    TMR2_PWMInit(High_Level, PWM_Times_1);
    TMR2_Disable();
    TMR2_PWMCycleCfg(devSteup.BEEP_HZ); // 周期 100us
    TMR2_PWMActDataWidth( devSteup.BEEP_HZ/2); // 占空比 50%, 修改占空比必须暂时关闭定时器
    //TMR2_Enable();
    GPIOA_ResetBits(GPIO_Pin_11); // BEEP控制线拉低
 //关闭蜂鸣器、震动、灯
                TMR2_Disable();
                Motor_OFF;
                GPIOA_ResetBits(GPIO_Pin_11); // BEEP控制线拉低
                if(LedBeepSetup.led_color == LED_BLUE){LED_BLUE_OFF;}
                else {LED_GREEN_OFF;}


设置完成后,可以尝试将引脚作为通用GPIO重新初始化进行高低电平的设置。


问题已经解决,留个记录:


解决办法,将定时器对应的开启和关闭的宏定义,稍微改动一下:(不知道使用代码贴上来,总是乱码,就用图片了)


更改前:

image.png


更改后:

image.png




原因:
停止PWM输出时,需要将定时器输出使能禁止掉,具体寄存器控制位为:RB_TMR_COUNT_EN??(如下图红框所示)


image.png

spacer.gif


只有登录才能回复,可以选择微信账号登录