1) 执行 WFI 进入停止模式之前,需确保 FLASH 不处于编程或者擦除状态(即EFM_FSR.RDY=1),且振荡停止监测功能无效,否则芯片无法进入停止模式。2) 执行 WFI 进入停止模式之前,需确保 DMA 处于停止状态(即 DMA_EN.EN=0),否则芯片可能会出现不可保证的动作。
3) 执行 WFI 进入停止模式之前,需将 EIRQ 的数字滤波设置为无效,否则该中断不能用于STOP 唤醒。
4) 选择中断事件解除停止模式,在执行 WFI 进入停止模式之前,需使能相应中断事件唤醒停止模式(INT_WUPEN)。
5) 执行 WFI 进入停止模式之前,需确保其他外设中断(非 STOP 模式唤醒中断)都已关闭。否则其他中断的触发可能导致芯片出现不可保证的动作。唤醒后,再恢复其他外设中断状态,以免错过中断事件。
6) 执行 WFI 进入停止模式之前,须确保 HRC 震荡,若系统时钟为 HRC 和 MPLL,还需将系统时钟切换至 MRC,唤醒后再恢复系统时钟,恢复 HRC 状态。
7) 由中断事件将 MCU 从停止模式恢复时,需将系统从 MRC 恢复至用户时钟设定,并还原中断配置- 其中第 4、5、6、7 点注意事项可通过自行关闭 NVIC 及时钟模块对应寄存器实现,或调用 XHSC 提供的 API 接口:。
en_result_t enIntWakeupEnable(uint32_t u32WakeupSrc); (使能中断事件唤醒停止模式)
void PWC_EnterStopMd(void); (进入停止模式)此函数额外占用约 100us@168MHz
void PWC_IrqClkBackup(void); (备份用户时钟设置)此函数额外占用约 50us@168MHz
void PWC_IrqClkRecover(void)(恢复用户时钟设置)此函数额外占用约 50us@168MHz
|