// UART1_Reset();
// R8_UART1_MCR = 0;
// R8_UART1_IER = 0;
// R8_UART1_IIR = 1;
// R8_UART1_LCR = 0;
// R8_UART1_LSR = 0x60;
GPIOA_ModeCfg(GPIO_Pin_8,GPIO_ModeIN_PU);
GPIOA_ITModeCfg(GPIO_Pin_8,GPIO_ITMode_FallEdge);//PA8 串口唤醒
PFIC_EnableIRQ(GPIO_A_IRQn);
PWR_PeriphWakeUpCfg( ENABLE, RB_SLP_GPIO_WAKE, Edge_LongDelay );//唤醒源
DelayMs( 2 );
LowPower_Sleep( RB_PWR_RAM16K | RB_PWR_RAM2K ); //只保留14+2K SRAM 供电
HSECFG_Current( HSE_RCur_100 ); // 降为额定电流(低功耗函数中提升了HSE偏置电流)
这是睡眠配置,睡眠前把串口设置成外io唤醒
这是启动的时候配置的串口, 能用, 但唤醒后重新调用, 就出现死机现象了
void Uart1_Ble_Init(void)
{
UART1_Reset();//串口复位
GPIOA_SetBits(bTXD1);
GPIOA_ModeCfg(bTXD1, GPIO_ModeOut_PP_5mA);
GPIOA_ModeCfg(bRXD1, GPIO_ModeIN_PU);
UART1_DefInit( );
UART1_ByteTrigCfg( UART_1BYTE_TRIG );//UART_1BYTE_TRIG,UART_7BYTE_TRIG
UART1_INTCfg( ENABLE, RB_IER_RECV_RDY|RB_IER_LINE_STAT );
PFIC_EnableIRQ( UART1_IRQn );
}
这是串口中断
void GPIOA_IRQHandler(void)
{
GPIOA_irqFlag = GPIOA_ReadITFlagPort();
if(GPIOA_irqFlag & GPIO_Pin_8){//chuankou
GPIOA_ClearITFlagBit(GPIO_Pin_8);
PFIC_DisableIRQ(GPIO_A_IRQn);
}
}
死机不知道死在哪, 不方便debug, 问题有可能出在哪?
2022-8-10 09:21:08
唤醒后要关闭GPIO中断,关闭GPIO唤醒,然后重新设置IO,再初始化串口
唤醒后要关闭GPIO中断,关闭GPIO唤醒,然后重新设置IO,再初始化串口
举报