中断服务程序如下
[mw_shl_code=c,true]int IO_Digital_Flag=0; //加入响应函数
void EXTI1_IRQHandler(void)
{
if(SET == EXTI_GetITStatus(EXTI_Line1)) //此处可以判断是哪个中断line,因为不同中断线可能对应相同的中断向量
{
IO_Digital_Flag = 1;
EXTI_ClearITPendingBit(EXTI_Line1);
}
}[/mw_shl_code]
main函数如下:
[mw_shl_code=c,true]while(1)
{
for(i=0;i<=1959;i++)
{
if(IO_Digital_Flag == 1)
{
IO_Digital_Flag=0; //清0
i_PA0 = i; //把i留下,保存到i_PA0里
for(j=40;j<=380;j++)
{
rising_edge[j-40] = CommQueue.Buffer[i+(j-40)]; }
}
break; //跳出for循环
}
i=0; //i清0
}[/mw_shl_code]
断点执行到“中断服务程序的IO_Digital_Flag = 1;”时,
但main函数断点执行不到 “if(IO_Digital_Flag == 1)”
这个中断很频繁(5ms一次),与这个有关系吗?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
读写中断中改变的变量,先关中断。读写完再打开。
一周热门 更多>