【简介】
S32K3 的芯片运行模式可以在S32DS 的POWER 模块的ModuleConfiguration -> ModeSettingConf 下进行配置。

本地添加Standby 模式配置。

添加完Standby 的模式配置后,我们继续添加Wkpu 模块来配置芯片唤醒源配置,关于Wkpu 模块的配置可以查看此帖( 【S32K3XX】WakeUp 功能)。
本地实际用外部GPIO 上升沿唤醒,配置gpio 未Wkpu 功能,对应的 wakeup 的source 为14.

因为Wkpu 的前四个唤醒源设计的时候是分配给内部唤醒源使用。


所以我们配置Wkpu 时对应的channel 要配置为18.


配置完成后我们添加如下的代码进入standby 模式,进入standby 模式前我们先配置唤醒源。
unsigned int standby(char argc, char **argv)
{
/* WKPU configuration */
Wkpu_Ip_Init(0, &Wkpu_Ip_Config_PB);
Wkpu_Ip_EnableInterrupt(0, Wkpu_Ip_ChannelConfig_PB[0].hwChannel);
/* Enter RUN mode */
Power_Ip_SetMode(&Power_Ip_aModeConfigPB[1]);
return 0;
}触发上述休眠代码后,按下按唤醒按键一按照预期的唤醒了。添加如下代码在唤醒后打印唤醒源。
void get_wakeup_source(void)
{
if(IP_MC_ME->MODE_STAT)
{
LOG_I("PREV_MODE: STANDBY WISR = %lx WISR_64 = %lx",IP_WKPU->WISR, IP_WKPU->WISR_64);
}
else
{
LOG_I("PREV_MODE: RESET");
}
}唤醒后打印的唤醒源为0x40000,对应的wake source 为18 ,跟我们配置的一致,测试结果和配置的唤醒源一致。

我要赚赏金
