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.
In order to give better visibility on the answered topics, please click on 'Best answer' on the reply which solved your issue or answered your question. Saket_Om