//main函数
u8 x=0;
int main(void)
{
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
delay_init(168);
uart_init(115200);
LED_Init();
EXTIX_Init();
while(1)
{
printf("%d
",x);
x+=1;
delay_ms(1000);
}
}
//外部中断函数
extern u8 x;
void EXTI4_IRQHandler(void)
{
delay_ms(10);
if(KEY0==0)
{
x=1;
}
EXTI_ClearITPendingBit(EXTI_Line4);
}
贴出了关键代码,在主程序中,对x不停的进行加一操作
在按键按下的时候触发外部中断,中断服务函数里对x重新赋值为1。
实验现象是:比如在主程序中已经加到10了,然后按按键,接着x又重新从1开始计数。
在x=10的时候按按键触发中断,先进行现场保护,然后在中断函数中将x置为1,在恢复现象的时候难道不应该将x恢复成10?保护现场与恢复现场难道不是把中断服务函数 里的改过的变量恢复到执行中断之前?求大神指教
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
系统要保护的是系统公用的资源相关寄存器.如工作寄存器.状态寄存器.
一周热门 更多>