由于rc不准,在我的项目里面使用了外部RTC晶振,但是在使用的过程中发现, 问题:
1.在进入低功耗后,MCU 无法被rtc唤醒 ,或只能唤醒一次
猜测是进入低功耗后,rtc不起振,无法通过中断唤醒 ,使用内部的rtc晶振倒是可以唤醒程序
请问官方在测试的时候遇到过类似的问题吗?
或者在电路设计的时候需要注意些什么?
下面是我的程序
int?main() { uint8_t?len; SetSysClock(CLK_SOURCE_PLL_60MHz); GPIOA_ModeCfg(GPIO_Pin_All,?GPIO_ModeIN_Floating); GPIOB_ModeCfg(GPIO_Pin_All,?GPIO_ModeIN_Floating); /*?配置串口1:先配置IO口模式,再配置串口?*/ GPIOB_SetBits(GPIO_Pin_13); GPIOB_ModeCfg(GPIO_Pin_12,?GPIO_ModeIN_PU);??????//?RXD-配置上拉输入 GPIOB_ModeCfg(GPIO_Pin_13,?GPIO_ModeOut_PP_5mA);?//?TXD-配置推挽输出,注意先让IO口输出高电平 GPIOPinRemap(ENABLE,RB_PIN_UART1); UART1_ByteTrigCfg(UART_1BYTE_TRIG); UART1_DefInit(); HAL_TimeInit(); PFIC_EnableIRQ(RTC_IRQn);/*?使能RTC中断?*/ printf("start=%d\n",intFlag); while(1){ printf("intFlag=%d\n",intFlag); mDelaymS(1000); RTC_TRIGFunCfg(32768*5); PWR_PeriphWakeUpCfg(?ENABLE,?RB_SLP_RTC_WAKE,?Long_Delay?); HSECFG_Current(HSE_RCur_100); } } __INTERRUPT __HIGH_CODE void?RTC_IRQHandler(void) { if(RTC_GetITFlag(RTC_TMR_EVENT)){ RTC_ClearITFlag(RTC_TMR_EVENT); } if(RTC_GetITFlag(RTC_TRIG_EVENT)){ RTC_ClearITFlag(RTC_TRIG_EVENT); } RTCTigFlag=1; intFlag++; }
热门产品 :
CH339: 7端口多功能USB HUB控制器芯片