Hello @curiae
To generate a periodic wake-up using HAL_RTCEx_SetWakeUpTimer() for a 50ms interval, you need to set the WakeUpCounter and WakeUpClock arguments appropriately.
WakeUpClock: This parameter determines the clock source for the wake-up timer. The available options are typically:
- RTC_WAKEUPCLOCK_RTCCLK_DIV16
- RTC_WAKEUPCLOCK_RTCCLK_DIV8
- RTC_WAKEUPCLOCK_RTCCLK_DIV4
- RTC_WAKEUPCLOCK_RTCCLK_DIV2
- RTC_WAKEUPCLOCK_CK_SPRE_16BITS
- RTC_WAKEUPCLOCK_CK_SPRE_17BITS
WakeUpCounter: This parameter sets the counter value for the wake-up timer. The counter value is calculated based on the desired wake-up interval and the selected clock source.
To achieve a 50ms wake-up interval, you need to calculate the appropriate counter value based on the selected clock source. For example, if you choose RTC_WAKEUPCLOCK_RTCCLK_DIV16, the calculation would be as follows:
Assume the RTCCLK is 32.768 kHz (LSE clock).
- The clock source after division by 16 would be 32.768 kHz / 16 = 2.048 kHz.
- The period of this clock source is 1 / 2.048 kHz = 0.48828125 ms.
- To achieve a 50ms interval, the counter value should be 50ms / 0.48828125ms ≈ 102.4.
Since the counter value must be an integer, you can round it to 102.