测试情况:测试IC: M0516LDN, NUC029.
(1)单独使用GPIO P2P3P4中断可以正常唤醒;
(2)使用EXINT0和Exint1外部中断可以正常唤醒;
(3)GPIO P2P3P4中断和两个外部中断同时使用,只有外部中断能够唤醒;
问题:
需要GPIO P2P3P4和外部中断都可以唤醒。
配置代码:
VOID GPIOP2P3P4_IRQHandler(VOID)
{
if ((P4_ISRC&(1<<4))!=0) {
P4_ISRC |= (1<<4); //清中断标识;
Uart0_Send_u32(0x01);
last_record_addr = record_update(last_record_addr);
}
}
VOID EINT0_IRQHandler(VOID)
{
P3_ISRC |= 1<<2;
}
VOID EINT1_IRQHandler(VOID)
{
P3_ISRC |= 1<<3; //写 1 清空
}
深度睡眠代码:
VOID McuPowerDown(VOID)
{
PROTECT_REG
(
SCR |= SLEEPDEEP; /* 进入睡眠模式 */
PWRCON &= ~PD_WU_IE; /* 禁止掉电模式下唤醒的中断中断使能 */
PWRCON &= ~PD_WAIT_CPU;
PWRCON &= ~WU_DLY;
PWRCON &= ~PD_WU_IE;
PWRCON |= WU_DLY;
PWRCON |= PD_WAIT_CPU;
PWRCON |= PD_WU_IE;
PWRCON |= PWR_DOWN_EN;
)
__WFI();
}
|