I followed the sample code provided with power_manager_hal_demo_frdmk22f to switch between HSrunmode and Run mode. I am using CLOCK_SYS_UpdateConfiguration() and POWER_SYS_SetMode() to switch between the two modes which according to documentation should notify the registered drivers. My UART is working fine but the timer is not.
Here is the procedure I follow in my code:
Start a periodic timer
Whenever the timer expires (it's a loop as the timer is periodic),
Process some data and switch between HSrun and Run modes to be able to write to flash
Wait for the timer to expire
end of loop
I see that if I restart the HW timer using HWTIMER_SYS_Stop and HWTIMER_SYS_Start, the periodic timer never gets fired after the first time and if I don't restart the timer, the timer gets fired but after a very long time as if it's period got changed.
I also tried calling HWTIMER_SYS_SetPeriod(&systimer, BSP_ALARM_PERIOD); in the callback function but it didn't have any effect.
Please let me know what is the best way to make the periodic timer work even if the clock changes without restarting it.