有啊,但是例程都要RX TX设置成输出,冤枉啊!!!(请问有你的联系方式吗,方便请教你问题,谢谢),目前将IO设置输出函数删除已经降到27ua,继续排查问题,谢谢!!
//lpuart_lpmode 例程
int32_t main(void)
{
stc_lpuart_config_t stcConfig;
stc_lpuart_irq_cb_t stcLPUartIrqCb;
stc_lpuart_multimode_t stcMulti;
stc_lpuart_sclk_sel_t stcLpuart_clk;
stc_lpuart_mode_t stcRunMode;
stc_bt_config_t stcBtConfig;
stc_lpm_config_t stcLpmCfg;
DDL_ZERO_STRUCT(stcConfig);
DDL_ZERO_STRUCT(stcLPUartIrqCb);
DDL_ZERO_STRUCT(stcMulti);
DDL_ZERO_STRUCT(stcBtConfig);
DDL_ZERO_STRUCT(stcLpmCfg);
stcLpmCfg.enSLEEPDEEP = SlpDpEnable;//SlpDpDisable;//
stcLpmCfg.enSLEEPONEXIT = SlpExtDisable;//唤醒后不自动进入睡眠
Clk_Enable(ClkRCL, TRUE);
Clk_SetRCLFreq(ClkFreq38_4K);//内部38.4K
Clk_SetPeripheralGate(ClkPeripheralLpUart,TRUE);//使能LPUART时钟
Clk_SetPeripheralGate(ClkPeripheralBt,TRUE);
//通道端口配置
Gpio_InitIOExt(2,5,GpioDirOut,TRUE,FALSE,FALSE,FALSE);
Gpio_InitIOExt(2,6,GpioDirOut,TRUE,FALSE,FALSE,FALSE);
Gpio_SetFunc_UART2RX_P25();
Gpio_SetFunc_UART2TX_P26();
Gpio_InitIO(T1_PORT,T1_PIN,GpioDirIn);
Gpio_InitIO(0,3,GpioDirOut);
stcLpuart_clk.enSclk_sel = LPUart_Rcl;//LPUart_Pclk;//
stcLpuart_clk.enSclk_Prs = LPUartDiv1;
stcConfig.pstcLpuart_clk = &stcLpuart_clk;
stcRunMode.enLpMode = LPUartLPMode;//正常工作模式或低功耗工作模式配置
stcRunMode.enMode = LPUartMode3;
stcConfig.pstcRunMode = &stcRunMode;
stcLPUartIrqCb.pfnRxIrqCb = RxIntCallback;
stcLPUartIrqCb.pfnTxIrqCb = TxIntCallback;
stcLPUartIrqCb.pfnRxErrIrqCb = ErrIntCallback;
stcConfig.pstcIrqCb = &stcLPUartIrqCb;
stcConfig.bTouchNvic = TRUE;
stcMulti.enMulti_mode = LPUartNormal;//只有模式2/3才有多主机模式
stcConfig.pstcMultiMode = &stcMulti;
LPUart_EnableIrq(LPUartRxIrq);
LPUart_Init(&stcConfig);
LPUart_EnableFunc(LPUartRx);
Gpio_SetIO(0,3,1);
#if 1
while(1 == Gpio_GetIO(T1_PORT,T1_PIN));//注意:此处用户不能屏蔽,否则进入深度休眠模式导致SWD连接不上
Lpm_Config(&stcLpmCfg);
Lpm_GotoLpmMode();
#endif
while (1)
{
if((u8RxData[0] == 0x55)&&(u8RxData[1] == 0x44)&&(u8RxData[2] == 0x33)&&(u8RxData[3] == 0x22)&&(u8RxData[4] == 0x11))
{
u8RxCnt = 0;
Gpio_SetIO(0,3,0);
}
}
}
|