AnsweredAssumed Answered

How to wait in Low Power mode with FreeRTOS and Kinetis MKL16Z

Question asked by Bruce Graham on Feb 6, 2019
Latest reply on Feb 18, 2019 by Daniel Chen

Kinetis MKL16Z

MCUXpresso IDE v10.2.1 [Build 795] [2018-07-25] 

Amazon FreeRTOS


I need to put the MCU into low power mode.

I go the "power_mode_switch" example to work with my custom board.

I am attempting to convert the "power_mode_switch" example to work with FreeRTOS.


Around the calls to APP_PowerModeSwitch(), which calls SMC_PreEnterWaitModes() SMC_SetPowerModeWait(SMC), I used portENTER_CRITICAL() and portEXIT_CRITICAL().


portENTER_CRITICAL(); // stop the RTOS kernel tick timer


APP_PowerModeSwitch(SMC_GetPowerModeState(SMC), kAPP_PowerModeWait);


portEXIT_CRITICAL(); // resume the RTOS kernel tick timer


The FreeRTOS APIs did not keep the MCU in low power mode. I am guessing that an interrupt woke the MCU.


I would like to determine which interrupt woke the MCU. Can MCUXpresso catch the interrupt in the debugger?


The FreeRTOS docs do't cover this problem. Is there a "correct way" to do this in FreeRTOS?