2015-02-16 12:41 PM
I am studying awakening from Standby Mode on STM32F100CB.
I have this context: we set up WKUP pin and RTC Alarm, and go to Standby. Then, rising edge on WKUP pin or RTC Alarm wakes the system up. Here are a few things that were determined experimentally (I could not find them documented in RM0041), and I'd like to check them with you: 1. It is impossible to determine what caused the wakeup: WKUP pin or RTC Alarm. (RTC_CRL & RTC_CRL_ALRF) is always 0 on the wakeup. 2. By default, RTC_ALR==0. Meaning that RCT Alarm will still wake the system up from Standby when RTC_CNT==0 (after RTC_CNT==0xFFFFFFFF), event if we don't call RTC_SetAlarm(tickstamp). This can be checked by calling RTC_SetCounter(0xFFFEFFFF), where 0xFFFEFFFF is some big number close to the upperbound value. 3. If programmable counter RCT_CNT overflows during Standby, the Overflow Interrupt will never be triggered (i.e. RTC_IRQHandler() will never be called), even after wakeup. Are these statements correct? #standby #rtc-alarm #wkup #f10x2015-02-17 02:36 AM
Correction: in point 2, RTC_ALR's reset value is 0xFFFFFFFF [RM0041 17.4.6], not 0.
Also, regarding point 2, there is no switch to disable/enable RTC Alarm in Standby mode, is there?2015-02-19 04:10 AM
Confirmation of all 3 observations can be concluded:
- from [], where is shown that flags RTC_Alarm and RTC_Overflow are not set during standby, and also - from the fact that ''all registers are reset after wakeup from Standby except for Power control/status register (PWR_CSR)'' [RM0041 4.3.5]. The only question remains is whether there is a switch to disable/enable RTC Alarm in Standby mode.2015-02-19 10:30 PM
You should keep in mind too, that the contents of the SR's of RCC/PWR/... are dependent of debug-unit is enabled or not!
You can use more flags with debugger connected than without ;) Make a register dump of alle RCC/PWR/RTC registers in this four cases ([with debuger and not] x [from Wakeup-Interrupt and from RTC-Interrupt]. You will see the difference. You should keep in mind, that the RTC-Interrupt is OR'ed to the Wakeup-Interrupt. If the Wakeup-Line is permanent 'high', the RTC-Interrupt (edge-triggered) won't happen at all! In some cases it could be better to use the Watchdog instead. [if you wake up frequently with times below ~30s] [all based on F103, but i think it is similar]2015-02-20 12:55 PM
damh, thank you!