初级会员

- 积分
- 58
- 金钱
- 58
- 注册时间
- 2020-5-24
- 在线时间
- 9 小时
|
发表于 2020-5-24 22:00:50
|
显示全部楼层
本帖最后由 leelzj 于 2020-5-25 14:29 编辑
u8 dir = 1;
u8 ledpwmval;
u8 ledpwmcount;
u8 timecount;
void TIM3_IRQHandler(void)//200us进一次中断
{
if(TIM_GetITStatus(TIM3,TIM_FLAG_Update))
{
if(++timecount > 100)
{
timecount = 0;
if((dir==1)&&(ledpwmcount<=99))
{
ledpwmcount++;
if(ledpwmcount > 99)
{
ledpwmcount = 99;
dir = 0;
}
}
if((dir==0)&&(ledpwmcount>0))
{
ledpwmcount--;
if(ledpwmcount == 0)
{
ledpwmcount = 0;
dir = 1;
}
}
ledpwmval = ledpwmcount;
}
if(ledpwmval>0)
{
GPIO_ResetBits(GPIOG,GPIO_Pin_9);
ledpwmval--;
}
else
GPIO_SetBits(GPIOG,GPIO_Pin_9);
}
TIM_ClearITPendingBit(TIM3,TIM_IT_Update); //清除中断标志位
}
|
|