@@ -67,7 +67,7 @@ void STM32LowPower::begin(void)
6767 */
6868void STM32LowPower::idle (uint32_t millis)
6969{
70- if ((millis > 0 ) || _rtc_wakeup) {
70+ if ((millis > 0 ) || _rtc_wakeup) {
7171 programRtcWakeUp (millis, IDLE_MODE);
7272 }
7373 LowPower_sleep (PWR_MAINREGULATOR_ON);
@@ -81,7 +81,7 @@ void STM32LowPower::idle(uint32_t millis)
8181 */
8282void STM32LowPower::sleep (uint32_t millis)
8383{
84- if ((millis > 0 ) || _rtc_wakeup) {
84+ if ((millis > 0 ) || _rtc_wakeup) {
8585 programRtcWakeUp (millis, SLEEP_MODE);
8686 }
8787 LowPower_sleep (PWR_LOWPOWERREGULATOR_ON);
@@ -95,7 +95,7 @@ void STM32LowPower::sleep(uint32_t millis)
9595 */
9696void STM32LowPower::deepSleep (uint32_t millis)
9797{
98- if ((millis > 0 ) || _rtc_wakeup) {
98+ if ((millis > 0 ) || _rtc_wakeup) {
9999 programRtcWakeUp (millis, DEEP_SLEEP_MODE);
100100 }
101101 LowPower_stop (_serial);
@@ -109,7 +109,7 @@ void STM32LowPower::deepSleep(uint32_t millis)
109109 */
110110void STM32LowPower::shutdown (uint32_t millis)
111111{
112- if ((millis > 0 ) || _rtc_wakeup) {
112+ if ((millis > 0 ) || _rtc_wakeup) {
113113 programRtcWakeUp (millis, SHUTDOWN_MODE);
114114 }
115115 LowPower_shutdown ();
@@ -123,13 +123,14 @@ void STM32LowPower::shutdown(uint32_t millis)
123123 * @param mode: pin interrupt mode (HIGH, LOW, RISING, FALLING or CHANGE)
124124 * @retval None
125125 */
126- void STM32LowPower::attachInterruptWakeup (uint32_t pin, voidFuncPtrVoid callback, uint32_t mode)
126+ void STM32LowPower::attachInterruptWakeup (uint32_t pin, voidFuncPtrVoid callback, uint32_t mode, LP_Mode LowPowerMode )
127127{
128- // All GPIO for idle (smt32 sleep) and sleep (stm32 stop)
129128 attachInterrupt (pin, callback, mode);
130129
131- // If Gpio is a Wake up pin activate it for deepSleep (standby stm32) and shutdown
132- LowPower_EnableWakeUpPin (pin, mode);
130+ if (LowPowerMode == SHUTDOWN_MODE) {
131+ // If Gpio is a Wake up pin activate it for shutdown (standby or shutdown stm32)
132+ LowPower_EnableWakeUpPin (pin, mode);
133+ }
133134}
134135
135136/* *
@@ -141,7 +142,7 @@ void STM32LowPower::attachInterruptWakeup(uint32_t pin, voidFuncPtrVoid callback
141142 */
142143void STM32LowPower::enableWakeupFrom (HardwareSerial *serial, voidFuncPtrVoid callback)
143144{
144- if (serial != NULL ) {
145+ if (serial != NULL ) {
145146 _serial = &(serial->_serial );
146147 // Reconfigure serial for low power mode (using HSI as clock source)
147148 serial->configForLowPower ();
@@ -159,7 +160,7 @@ void STM32LowPower::enableWakeupFrom(HardwareSerial *serial, voidFuncPtrVoid cal
159160 */
160161void STM32LowPower::enableWakeupFrom (STM32RTC *rtc, voidFuncPtr callback, void *data)
161162{
162- if (rtc == NULL ) {
163+ if (rtc == NULL ) {
163164 rtc = &(STM32RTC::getInstance ());
164165 }
165166 _rtc_wakeup = true ;
@@ -176,10 +177,10 @@ void STM32LowPower::programRtcWakeUp(uint32_t millis, LP_Mode lp_mode)
176177{
177178 int epoc;
178179 uint32_t sec;
179- STM32RTC& rtc = STM32RTC::getInstance ();
180+ STM32RTC & rtc = STM32RTC::getInstance ();
180181 STM32RTC::Source_Clock clkSrc = rtc.getClockSource ();
181182
182- switch (lp_mode) {
183+ switch (lp_mode) {
183184 case IDLE_MODE:
184185 case SLEEP_MODE:
185186 break ;
@@ -200,15 +201,15 @@ void STM32LowPower::programRtcWakeUp(uint32_t millis, LP_Mode lp_mode)
200201 }
201202 rtc.configForLowPower (clkSrc);
202203
203- if (millis > 0 ) {
204+ if (millis > 0 ) {
204205 // Convert millisecond to second
205206 sec = millis / 1000 ;
206207 // Minimum is 1 second
207- if (sec == 0 ){
208+ if (sec == 0 ) {
208209 sec = 1 ;
209210 }
210211
211212 epoc = rtc.getEpoch ();
212- rtc.setAlarmEpoch ( epoc + sec );
213+ rtc.setAlarmEpoch (epoc + sec);
213214 }
214215}
0 commit comments