MCU S32DS

S32DS开发S32K148,使用freeRTos,进入停止模式


目前公司一个项目调试S32K148,进入停止模式(低功耗的一种),在不加入RTos进入低功耗模式OK,但是有RTos进入了停止模式,直接被唤醒,查看了资料知道是systick唤醒了停止模式,所以我就使用简单粗暴的方式直接在进入模式之前关闭了systick,直接上代码:
port.c
增加定义:
开启tick:portNVIC_SYSTICK_CTRL_REG |= portNVIC_SYSTICK_ENABLE_BIT;
关闭tick:portNVIC_SYSTICK_CTRL_REG &= ~portNVIC_SYSTICK_ENABLE_BIT;

task.c
在任务里面增加:
SYSTICK_disable();/close systick timer,prevent it wake on MCU stop mode./
PINS_DRV_SetPins(LED_GPIO, 1 << LED3);
/set mcu is run mode,prevent other mode do not change to sleep mode/
POWER_SYS_SetMode(POWER_STATE_RUN,POWER_MANAGER_POLICY_AGREEMENT);
POWER_SYS_SetMode(POWER_STATE_VLPS,POWER_MANAGER_POLICY_AGREEMENT);
SYSTICK_enable();/*open systick timer,task normal start */

你可能感兴趣的:(MCU)