STM32如何重置PWM端口

2025-03-02 09:03:21
推荐回答(2个)
回答1:

最简单的方法,检测到按键按下之后,初始化PWM的定时器,输出PWM;检测到按键松开后,反初始化PWM定时器,设置PWM的IO输出0.

void PwmStart(void)
{
    TIM3_GPIO_Config();
    TIM3_Mode_Config(200);  //占空比0.4 设置了TIM3_Mode_Config(int i)
    /*开启TIM3*/
    TIM_Cmd(TIM3, ENABLE);
}

void PwmStop(void)
{
    GPIO_InitTypeDef  GPIO_InitStructure;
    TIM_Cmd(TIM3,DISABLE);
    TIM_DeInit(TIM3);
    //GPIO配置,把PWM的IO配置为输出,然后输出0.
    GPIO_InitStructure.GPIO_Pin = PWM_PIN;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_Init(GPIOx, &GPIO_InitStructure);  
    GPIO_ResetBit(GPIOx, PWM_PIN);
}

int main(void)
{
    int nKeyState = -1;
    ...
    
    while(1)
    {
        KEY=ReadKeyDown();
        if (nKeyState != KEY)
        {
            nKeyState  = KEY;
            if(KEY==1)
            {
                PwmStart();
            }
            else
            {
                PwmStop(); 
            }
        }
    }
}

回答2:

将pwm的占空比设置为0,然后停止pwm如何?