按键矩阵:使用的是内部上拉,改用外部上拉10K电阻,一样会卡在那里不能唤醒。
贴上代码:
void McuHalt(void)
{
DISABLE_INT(); //先关闭中断避免在进入休眠前有端口中断发生
CLK_Peripheral_Disable();
EnableKeyIsr(ENABLE);//使能端口下降沿中断并将行扫描的端口设置为低
TIM4_Cmd(DISABLE);
nop();
__halt();
nop();
KeyPressEvent(); //真正唤醒后才关闭中断
TIM4_Cmd(ENABLE);
CLK_Peripheral_Enable();
}
//按键接收中断 下降沿中断
#pragma vector=10
__interrupt void EXTI0_IRQHandler(void)
{
OSSetEvent(KEY_TASK,KEY_INT_EVENT);
EXTI_ClearITPendingBit(EXTI_IT_Pin0);
}
#pragma vector=11
__interrupt void EXTI1_IRQHandler(void)
{
EXTI_ClearITPendingBit(EXTI_IT_Pin1);
} |