[mw_shl_code=c,true]//¶¨ê±Æ÷4ÖD¶Ï·tÎñoˉêy
void TIM4_IRQHandler(void)
{
if(TIM_GetITStatus(TIM4,TIM_IT_Update)==SET) //òç3öÖD¶Ï
TIME_CYCLE++;
printf("
time:%d",TIME_CYCLE);
TIM_ClearITPendingBit(TIM4,TIM_IT_Update); //Çå3yÖD¶Ï±ê־λ
delay_us(5); //èôûóDÑó3ù£¬ÖD¶Ï±êê¶à′2»¼°Çå3y£¬μ¼ÖÂÖD¶ÏÖ′DDá½′Î
}[/mw_shl_code]
由于硬件清除中断标识不及时,中断可能执行两次,解决方法如下:
1:添加延时,如以上代码所示;
2:将清除中断标识的函数往前放,可放在TIME_CYCLE++; 之前,即可解决
总之,要留有清除时间!
一周热门 更多>