@@ -67,7 +67,7 @@ void STM32LowPower::begin(void)
67
67
*/
68
68
void STM32LowPower::idle (uint32_t millis)
69
69
{
70
- if ((millis > 0 ) || _rtc_wakeup) {
70
+ if ((millis > 0 ) || _rtc_wakeup) {
71
71
programRtcWakeUp (millis, IDLE_MODE);
72
72
}
73
73
LowPower_sleep (PWR_MAINREGULATOR_ON);
@@ -81,7 +81,7 @@ void STM32LowPower::idle(uint32_t millis)
81
81
*/
82
82
void STM32LowPower::sleep (uint32_t millis)
83
83
{
84
- if ((millis > 0 ) || _rtc_wakeup) {
84
+ if ((millis > 0 ) || _rtc_wakeup) {
85
85
programRtcWakeUp (millis, SLEEP_MODE);
86
86
}
87
87
LowPower_sleep (PWR_LOWPOWERREGULATOR_ON);
@@ -95,7 +95,7 @@ void STM32LowPower::sleep(uint32_t millis)
95
95
*/
96
96
void STM32LowPower::deepSleep (uint32_t millis)
97
97
{
98
- if ((millis > 0 ) || _rtc_wakeup) {
98
+ if ((millis > 0 ) || _rtc_wakeup) {
99
99
programRtcWakeUp (millis, DEEP_SLEEP_MODE);
100
100
}
101
101
LowPower_stop (_serial);
@@ -109,7 +109,7 @@ void STM32LowPower::deepSleep(uint32_t millis)
109
109
*/
110
110
void STM32LowPower::shutdown (uint32_t millis)
111
111
{
112
- if ((millis > 0 ) || _rtc_wakeup) {
112
+ if ((millis > 0 ) || _rtc_wakeup) {
113
113
programRtcWakeUp (millis, SHUTDOWN_MODE);
114
114
}
115
115
LowPower_shutdown ();
@@ -123,13 +123,14 @@ void STM32LowPower::shutdown(uint32_t millis)
123
123
* @param mode: pin interrupt mode (HIGH, LOW, RISING, FALLING or CHANGE)
124
124
* @retval None
125
125
*/
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 )
127
127
{
128
- // All GPIO for idle (smt32 sleep) and sleep (stm32 stop)
129
128
attachInterrupt (pin, callback, mode);
130
129
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
+ }
133
134
}
134
135
135
136
/* *
@@ -141,7 +142,7 @@ void STM32LowPower::attachInterruptWakeup(uint32_t pin, voidFuncPtrVoid callback
141
142
*/
142
143
void STM32LowPower::enableWakeupFrom (HardwareSerial *serial, voidFuncPtrVoid callback)
143
144
{
144
- if (serial != NULL ) {
145
+ if (serial != NULL ) {
145
146
_serial = &(serial->_serial );
146
147
// Reconfigure serial for low power mode (using HSI as clock source)
147
148
serial->configForLowPower ();
@@ -159,7 +160,7 @@ void STM32LowPower::enableWakeupFrom(HardwareSerial *serial, voidFuncPtrVoid cal
159
160
*/
160
161
void STM32LowPower::enableWakeupFrom (STM32RTC *rtc, voidFuncPtr callback, void *data)
161
162
{
162
- if (rtc == NULL ) {
163
+ if (rtc == NULL ) {
163
164
rtc = &(STM32RTC::getInstance ());
164
165
}
165
166
_rtc_wakeup = true ;
@@ -176,10 +177,10 @@ void STM32LowPower::programRtcWakeUp(uint32_t millis, LP_Mode lp_mode)
176
177
{
177
178
int epoc;
178
179
uint32_t sec;
179
- STM32RTC& rtc = STM32RTC::getInstance ();
180
+ STM32RTC & rtc = STM32RTC::getInstance ();
180
181
STM32RTC::Source_Clock clkSrc = rtc.getClockSource ();
181
182
182
- switch (lp_mode) {
183
+ switch (lp_mode) {
183
184
case IDLE_MODE:
184
185
case SLEEP_MODE:
185
186
break ;
@@ -200,15 +201,15 @@ void STM32LowPower::programRtcWakeUp(uint32_t millis, LP_Mode lp_mode)
200
201
}
201
202
rtc.configForLowPower (clkSrc);
202
203
203
- if (millis > 0 ) {
204
+ if (millis > 0 ) {
204
205
// Convert millisecond to second
205
206
sec = millis / 1000 ;
206
207
// Minimum is 1 second
207
- if (sec == 0 ){
208
+ if (sec == 0 ) {
208
209
sec = 1 ;
209
210
}
210
211
211
212
epoc = rtc.getEpoch ();
212
- rtc.setAlarmEpoch ( epoc + sec );
213
+ rtc.setAlarmEpoch (epoc + sec);
213
214
}
214
215
}
0 commit comments