@@ -110,15 +110,23 @@ void STM32LowPower::deepSleep(uint32_t ms)
110110 * @param ms: optional delay before leave the shutdown mode (default: 0).
111111 * @retval None
112112 */
113+ #if defined(STM32WB0x)
114+ void STM32LowPower::shutdown (void )
115+ {
116+ LowPower_shutdown (false );
117+ }
118+ #else
113119void STM32LowPower::shutdown (uint32_t ms)
114120{
115121 if ((ms != 0 ) || _rtc_wakeup) {
116122 programRtcWakeUp (ms, SHUTDOWN_MODE);
117123 }
124+
118125 /* Get the rtc object to know if it is configured */
119126 STM32RTC &rtc = STM32RTC::getInstance ();
120127 LowPower_shutdown (rtc.isConfigured ());
121128}
129+ #endif
122130
123131/* *
124132 * @brief Enable GPIO pin in interrupt mode. If the pin is a wakeup pin, it is
@@ -135,7 +143,11 @@ void STM32LowPower::attachInterruptWakeup(uint32_t pin, voidFuncPtrVoid callback
135143{
136144 attachInterrupt (pin, callback, mode);
137145
138- if (LowPowerMode == SHUTDOWN_MODE) {
146+ if ((LowPowerMode == SHUTDOWN_MODE)
147+ #if defined(PWR_WAKEUP_PA0)
148+ || (LowPowerMode == DEEP_SLEEP_MODE)
149+ #endif /* PWR_WAKEUP1_SOURCE_SELECTION_0 */
150+ ) {
139151 // If Gpio is a Wake up pin activate it for shutdown (standby or shutdown stm32)
140152 LowPower_EnableWakeUpPin (pin, mode);
141153 }
@@ -192,7 +204,11 @@ void STM32LowPower::programRtcWakeUp(uint32_t ms, LP_Mode lp_mode)
192204 break ;
193205 // LSI or LSE must be selected as clock source to wakeup the device.
194206 case DEEP_SLEEP_MODE:
207+ #if defined(RCC_RTC_WDG_BLEWKUP_CLKSOURCE_HSI64M_DIV2048)
208+ clkSrc = (clkSrc == STM32RTC::HSI_CLOCK) ? STM32RTC::LSI_CLOCK : clkSrc;
209+ #else
195210 clkSrc = (clkSrc == STM32RTC::HSE_CLOCK) ? STM32RTC::LSI_CLOCK : clkSrc;
211+ #endif
196212 break ;
197213 default :
198214 case SHUTDOWN_MODE:
0 commit comments