diff options
author | Dasky <[email protected]> | 2024-10-25 18:10:17 +0100 |
---|---|---|
committer | GitHub <[email protected]> | 2024-10-25 18:10:17 +0100 |
commit | 5c85271e48b4f2be7da47d1728ad1ddb95364ad7 (patch) | |
tree | b529dc681017349e509bb454a49fb220176400d4 /platforms/chibios/timer.c | |
parent | f486605bab51c858edad09deeedbdcefc398f222 (diff) | |
download | qmk_firmware-5c85271e48b4f2be7da47d1728ad1ddb95364ad7.tar.gz qmk_firmware-5c85271e48b4f2be7da47d1728ad1ddb95364ad7.zip |
Add timer_save and _restore functions. (#23887)
Co-authored-by: Sergey Vlasov <[email protected]>
Co-authored-by: Nick Brassel <[email protected]>
Diffstat (limited to 'platforms/chibios/timer.c')
-rw-r--r-- | platforms/chibios/timer.c | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/platforms/chibios/timer.c b/platforms/chibios/timer.c index 5e01ea6372..4a347b445d 100644 --- a/platforms/chibios/timer.c +++ b/platforms/chibios/timer.c @@ -5,6 +5,7 @@ static uint32_t ticks_offset = 0; static uint32_t last_ticks = 0; static uint32_t ms_offset = 0; +static uint32_t saved_ms = 0; #if CH_CFG_ST_RESOLUTION < 32 static uint32_t last_systime = 0; static uint32_t overflow = 0; @@ -73,6 +74,26 @@ void timer_clear(void) { chSysUnlock(); } +__attribute__((weak)) void platform_timer_save_value(uint32_t value) { + saved_ms = value; +} + +__attribute__((weak)) uint32_t platform_timer_restore_value(void) { + return saved_ms; +} + +void timer_restore(void) { + chSysLock(); + ticks_offset = get_system_time_ticks(); + last_ticks = 0; + ms_offset = platform_timer_restore_value(); + chSysUnlock(); +} + +void timer_save(void) { + platform_timer_save_value(timer_read32()); +} + uint16_t timer_read(void) { return (uint16_t)timer_read32(); } |