
/////////////////////////////////////////////////////////// 在Standby模式休眠后,等RTC时间到后会复位一次。但进入STOP1模式时,RTC无法唤醒系统 //////////////////////////////////////////////////////////// void RCT_Init(void) { /* Enable RTC APB clock */ LL_APB1_GRP1_EnableClock(LL_APB1_GRP1_PERIPH_RTC); LL_APB1_GRP1_EnableClock(LL_APB1_GRP1_PERIPH_PWR); LL_PWR_EnableBkUpAccess(); /* Enable LSE only if disabled.*/ if (LL_RCC_LSE_IsReady() == 0) { LL_RCC_ForceBackupDomainReset(); LL_RCC_ReleaseBackupDomainReset(); LL_RCC_LSE_Enable(); while (LL_RCC_LSE_IsReady() != 1) { } LL_RCC_SetRTCClockSource(LL_RCC_RTC_CLKSOURCE_LSE); } /* Peripheral clock enable */ LL_RCC_EnableRTC(); ///////////////////////////////////////////////// /* ######## ENABLE WUT #################################################*/ /* Disable RTC registers write protection */ LL_RTC_DisableWriteProtection(RTC); /* Set prescaler according to source clock */ LL_RTC_SetAsynchPrescaler(RTC, RTC_ASYNCH_PREDIV); LL_RTC_SetSynchPrescaler(RTC, RTC_SYNCH_PREDIV); /* Disable wake up timer to modify it */ LL_RTC_WAKEUP_Disable(RTC); /* Wait until it is allow to modify wake up reload value */ while (LL_RTC_IsActiveFlag_WUTW(RTC) != 1) { } /* Setting the Wakeup time to RTC_WUT_TIME s If LL_RTC_WAKEUPCLOCK_CKSPRE is selected, the frequency is 1Hz, this allows to get a wakeup time equal to RTC_WUT_TIME s if the counter is RTC_WUT_TIME */ LL_RTC_WAKEUP_SetAutoReload(RTC, 1); LL_RTC_WAKEUP_SetClock(RTC, LL_RTC_WAKEUPCLOCK_CKSPRE); /* Enable RTC registers write protection */ LL_RTC_EnableWriteProtection(RTC); /* Disable RTC registers write protection */ LL_RTC_DisableWriteProtection(RTC); //禁用RTC寄存器写入保护 /* Enable wake up counter and wake up interrupt */ /* Note: Periodic wakeup interrupt should be enabled to exit the device from low-power modes.*/ LL_RTC_EnableIT_WUT(RTC); //启用唤醒计数器和唤醒中断(没看见这个中断入口函数) LL_RTC_WAKEUP_Enable(RTC); //唤醒使能 /* Enable RTC registers write protection */ LL_RTC_EnableWriteProtection(RTC); /* Reset Internal Wake up flag */ LL_RTC_ClearFlag_WUT(RTC); /* ######## ENTER IN STANDBY MODE ######################################*/ ///////////////////////////////////////////////// } void EnterStandbyMode(void) { /* Set Standby mode */ LL_PWR_SetPowerMode(LL_PWR_MODE_STANDBY); /* Set SLEEPDEEP bit of Cortex System Control Register */ LL_LPM_EnableDeepSleep(); /* This option is used to ensure that store operations are completed */ /* Request Wait For Interrupt */ __WFI(); } void EnterSTOP1Mode(void) { /* Set STOP1 mode */ LL_PWR_SetPowerMode(LL_PWR_MODE_STOP1); /* Set SLEEPDEEP bit of Cortex System Control Register */ LL_LPM_EnableDeepSleep(); /* This option is used to ensure that store operations are completed */ /* Request Wait For Interrupt */ __WFI(); } |
STM32CubeMX 配置STM32G070RBT6TR时无法使能PVD中断
STM32G070RBT6TR STM32CubeMX ADC配置后使用的是内部参考电压且零点的读数太大了
测评在哪里发?
Group Study vs. Solo Study: What Works Best?
STM32G070CBT6使用硬件SPI无法读出W25Q128的ID
STM32G0B0CET6的usb的时钟只能用48MHz的晶振来实现吗?
STM32G070RET6,中断优先级配置没有效果
如图:STM32F437的TIM10支持从模式吗?
STM32G070 UART串口,低波特率传送数据时,TIMER出现严重延时现象,如何解决?
STM32G070 UART串口,低波特率传送数据时,TIMER出现严重延时现象是,如何解决?
If LL_RTC_WAKEUPCLOCK_CKSPRE is selected, the frequency is 1Hz,
this allows to get a wakeup time equal to RTC_WUT_TIME s
if the counter is RTC_WUT_TIME */
LL_RTC_WAKEUP_SetAutoReload(RTC, 1);
LL_RTC_WAKEUP_SetClock(RTC, LL_RTC_WAKEUPCLOCK_CKSPRE);
一秒唤醒一次
/* Setting the Wakeup time to RTC_WUT_TIME s
If LL_RTC_WAKEUPCLOCK_CKSPRE is selected, the frequency is 1Hz,
this allows to get a wakeup time equal to RTC_WUT_TIME s
if the counter is RTC_WUT_TIME */
LL_RTC_WAKEUP_SetAutoReload(RTC, 1);
LL_RTC_WAKEUP_SetClock(RTC, LL_RTC_WAKEUPCLOCK_CKSPRE);
一秒唤醒一次