小弟刚接触STM32,遇到了诡异的事情,还请各位大牛不吝赐教。
/*我的主程序是连续播放动画,一个按钮0连接到GPIOC0,按钮是按下接地,设置了片上内部上拉,下降沿触发最后连到NVIC的EXTI0,抢占优先级10,当暂停用。*/
volatile FlagStatus pause = RESET;
void EXTI0_IRQHandler(void)
{
pause = SET;
while(pause == SET);
EXTI_ClearFlag (EXTI_Line0);
}
还有一个按钮1,其他设置一样,配置到了NVIC的EXTI1,抢占优先级9。
void EXTI1_IRQHandler(void)
{
pause = RESET;
EXTI_ClearFlag (EXTI_Line1);
}
设想的情况是按钮0暂停,按钮1播放,但是实际情况按下按钮0暂停后,必须按两下按钮1才能继续播放,仿真器观察到按一下按钮1的时候把EXTI寄存器的挂起清零了,再按一下1才会把pause清除。就应该这样吗?我没弄防抖呢,按键质量真不错,按一下就是一个脉冲,在仿真器里手动调上下拉制造脉冲也是一样的结果 |