xtimer and lower core/bus frequency in low power mode

Good day everyone,

I implemented low power mode for STM32L151-based board and looking for a solution of following problem.

When xtimer_sleep(10) executed, the MCU meant to go into low power mode for 1 second.

Assume that current clock frequency is 32 MHz, after I lower frequency to 4MHz MSI and entered to sleep, the timer will runt 8 times slower and xtimer_sleep(1) becomes xtimer_sleep(8) due to lower bus (and thus, timer) clock frequency.

How I should make xtimer aware about lower clock frequency? I tried to directly modify xtimer’s TIM5 prescaler with no luck.

Best regards,


imho, xtimer should be implemented off the lowest power timer. I don’t know that MCU that well but there is usually some kind of RTC timer or systick that runs even in the lowest power sleep mode, at the same frequency all the time.


Not yet implemented. Currently there’s a PR open for arbitrary constant frequency hardware timers with xtimer, but that PR is only one step on the way and does not take into account multiple timers or timers with varying frequency. The PR can be found at https://github.com/RIOT-OS/RIOT/pull/5608

Best regards, Joakim