本帖最后由 jjjkkk00 于 2013-12-10 15:58 编辑
看了下,有两个问题询问你一下!
//.........你的程序代码 //定时器2中断服务程序
void TIM2_IRQHandler(void)
{
tsr=TIM2->SR; //读取标志位
if(tsr&0X01)//判断发生溢出中断
{
PD13=~PD13;//黄灯闪
}
else if(tsr&0x02)//判断发生上升沿捕获
{
PD14=~PD14;//红灯闪 示波器上通道CH1
}
else
{ //判断其他中断
PD15=~PD15; //蓝灯闪 示波器上通道CH2
}
delayxx(3);//停留在中断函数内一小段时间——————————————————————问题1:这边在中断函数中嵌入延时,会不会对的你程序功能产生影响!!!
TIM_ClearITPendingBit(TIM2, TIM_IT_CC1|TIM_IT_Update); ——————————————问题2:此处只是清除了两个中断标记,那么对于其他中断标记,一旦发生了,你怎么去清除!!!
}
==========================================================
另外,附件中void TIM2_Cap_Init(u16 arr,u16 psc)函数内的中断失能函数调用的参数是否与你的目的一致?
//.....引用你的代码
TIM_ITConfig(TIM2,TIM_IT_Update|TIM_IT_CC2|TIM_IT_CC2|TIM_IT_CC2|TIM_IT_COM|TIM_IT_Trigger|TIM_IT_Break,DISABLE);// 允许溢出(更新)中断
==========================================================
上面的都是无关痛痒废话。
建议你仿真看一下,定时器使能了哪些中断标记?
|