如题,我想在MCU低功耗空闲的状态下使用串口唤醒,参考SDK中的电源管理例程修改了唤醒源和初始化了UART,进入低功耗空闲状态后,发现怎么发送数据都无法唤醒MCU,但是将UARTRX引脚初始化成GPIO串口发送数据能正常唤醒。不知道是不是哪里配置有问题,还是RT并不支持串口唤醒,如果支持,我该怎么操作?望解答。
各种模式下的唤醒源:


我的代码:
void Lpuart_Init(void) { /* Configure UART divider to default */
CLOCK_SetMux(kCLOCK_UartMux, 1); /* Set UART source to OSC 24M */
CLOCK_SetDiv(kCLOCK_UartDiv, 0); /* Set UART divider to 1 */
lpuart_config_t config;
/*
* config.baudRate_Bps = 115200U;
* config.parityMode = kLPUART_ParityDisabled;
* config.stopBitCount = kLPUART_OneStopBit;
* config.txFifoWatermark = 0;
* config.rxFifoWatermark = 0;
* config.enableTx = false;
* config.enableRx = false;
*/
LPUART_GetDefaultConfig(&config);
config.baudRate_Bps = BOARD_DEBUG_UART_BAUDRATE;
config.enableTx = true;
config.enableRx = true; LPUART_Init(APP_WAKEUP_LPUART_BASE, &config, APP_WAKEUP_LPUART_CLK_FREQ); /* Enable RX interrupt. */
LPUART_EnableInterrupts(APP_WAKEUP_LPUART_BASE, kLPUART_RxDataRegFullInterruptEnable);
EnableIRQ(APP_WAKEUP_LPUART_IRQn);
NVIC_EnableIRQ(APP_WAKEUP_LPUART_IRQn); LPM_EnableWakeupSource(APP_WAKEUP_LPUART_IRQn); }
void LowPowerIdleMode(void) { LPM_PreEnterWaitMode();
LPM_EnterLowPowerIdle(); LPM_ExitLowPowerIdle();
LPM_PostExitWaitMode(); }
void APP_WAKEUP_LPUART_IRQn_HANDLER(void)
{
if ((kLPUART_RxDataRegFullFlag)&LPUART_GetStatusFlags(APP_WAKEUP_LPUART_BASE))
{
recv_data = LPUART_ReadByte(APP_WAKEUP_LPUART_BASE);
PRINTF("%c", recv_data);
LPM_DisableWakeupSource(APP_WAKEUP_LPUART_IRQn);
}
}
|