一个按键控制pwm控制一个灯亮度,让灯灭,10亮度,50亮,百分之90亮(用定时器中断写)
你好博主,参考stm32 的写法,给你提供一个思路:外部中断检测按键按下后,置位breath_enable ,在while(1)里面开关LED灯,并在开关灯之间用延时函数不断去延时pwm_value (介于0到最大值PWM_PERIOD之间),这个最大值PWM_PERIOD你可以根据延时时长及光照流明值按照比例去调节,来实现你说的“10亮度,50亮,百分之90亮”。只能说,这里用的不是所谓的定时器中断。
if(breath_enable == 1)
{
if(pwm_value == 0)
{
pwm_direct = 0;
}
else if(pwm_value == PWM_PERIOD)
{
pwm_direct = 1;
}
if(pwm_direct == 0)
{
pwm_value++;
}
if(pwm_direct == 1)
{
pwm_value--;
}
HAL_GPIO_WritePin(LED_GPIO_Port,LED_Pin,GPIO_PIN_RESET);
delay_us(PWM_PERIOD-pwm_value);
HAL_GPIO_WritePin(LED_GPIO_Port,LED_Pin,GPIO_PIN_SET);
delay_us(pwm_value);
}