void EXTI0_IRQHandler(void)
{
delay_ms(10); //消抖
if(WK_UP==1) //WK_UP按键
{
LED0=!LED0;
LED1=!LED1;
}
EXTI->
R=1<<0; //清除LINE0上的中断标志位
}
上面就是外部中断函数的一段代码,我把
EXTI->R=1<<0去掉了,实验就不太灵了,我想知道为什么非要清除,不清除就不能再次进入中断了吗,说具体点?
还有第二个问题,关于PR的定义:挂起寄存器。当外部中断线上发生了选择的边沿事件,该寄存器的对应位会被置为1。0,表示对应线上没有发生触发请求。通过向该寄存器的对应位写入1可以清除该位。在中断服务函数里面经常会要向该寄存器的对应位写 1来清除中断请求。
从PR定义不是应该把PR致0才是清除标志位的吗
注:不是因问题本身,而是又见中断带延时,不知道为嘛莫名的忧伤。
编辑说明:解释
一周热门 更多>