最简单的方法,检测到按键按下之后,初始化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();
}
}
}
}
将pwm的占空比设置为0,然后停止pwm如何?