|
发表于 2023-7-31 16:26:07
|
显示全部楼层
如果楼主所说的异常跳出指的是,不知什么原因MCU由休眠状态转为正常工作状态,即被唤醒了。那么建议楼主从以下方面进行排查,以下是复制粘贴的文本(详细可参考FM33LC0xx产品说明书 4.3章节)
---------------
唤醒源
唤醒源 应用 可唤醒模式
Sleep DeepSleep
停振检测 可屏蔽,32786Hz 晶振停振时唤醒
芯片 √ √
VREF 可屏蔽,在 VREF1p22 建立后产生
中断唤醒芯片 √ √
SVD 可屏蔽,在电源电压跌落至阈值以
下或升高至阈值以上时唤醒芯片 √ √
比较器 可屏蔽,用于外部事件唤醒 √ √
ADC 可屏蔽,ADC 的各种中断均可用于
唤醒 √ √
RTC 可屏蔽,根据需要的唤醒周期设置 √ √
IO 引脚中断 可屏蔽,用于外部事件唤醒 √ √
Debug 不可屏蔽,用于 debug 唤醒 √ √
LPUART 可屏蔽,接收数据唤醒 √ √
WKUPx 引脚 可屏蔽,用于外部输入唤醒 √ √
NRST 不可屏蔽,用于全局复位 √ √
LPTIM32 可屏蔽,用于定时唤醒 √ √
BSTIM32 可屏蔽,用于定时唤醒 √ √
I2C 从机 可屏蔽,用于从机接收唤醒 √ √
通过Cortex-M0的PRIMASK功能,可以实现以上中断事件唤醒芯片,但是CPU不执行中断处理程序。
此时唤醒后CPU将继续从休眠前的指令之后开始运行。
注:芯片从休眠模式唤醒后,软件可以通过查询PMU.WKFR
寄存器来快速识别当前的唤醒源,唤醒
源的清除需要进入各个外设模块分别完成。 |
|