急!!!HC32L136K8TA休眠模式唤不醒
本帖最后由 zhufy 于 2021-3-19 20:38 编辑今天在做个低功耗的产品,使用HC32L136K8TA ,首先使用RCL跑32.768k,驱动LCD液晶屏,功耗做到12.8ua左右。然后想进一步降低功耗,进入普通休眠模式,功耗降低到5.8ua左右。配置I/O口外部下降沿唤醒。问题来了,一开始外部触发后可以正常唤醒,但唤醒几次后突然唤不醒了。唤不醒的状态下测功耗是在5.8ua,说明就是在休眠,反复多次外部触发也没用。使用标记位测试,程序就停留在进入休眠的语句,就是没唤醒。测量i/o口电平正常。
问题关键是,为什么前几次可以正常唤醒,然后怎么就突然唤不醒了?(这里保证中途没有改变I/O触发设置)!!!
附上休眠初始化程序:
//Lpm Cfg低功耗休眠模式配置
stc_lpm_config_t stcLpmCfg;
DDL_ZERO_STRUCT(stcLpmCfg);
stcLpmCfg.enSEVONPEND = Se***dDisable;
stcLpmCfg.enSLEEPDEEP = SlpDpDisable; //使能:执行WFI不进入深度休眠;
stcLpmCfg.enSLEEPONEXIT = SlpExtDisable; //不使能使能:退出异常处理并返回时,处理器自动进入休眠模式的特性禁止.
Lpm_Config(&stcLpmCfg);
附上休眠进入程序:
//外部触发中断使能 下降沿触发
Gpio_EnableIrq(GpioPortB,GpioPin9,GpioIrqFalling); //PB09 按钮
Gpio_EnableIrq(GpioPortC,GpioPin3,GpioIrqFalling); //PC03 RST1
Gpio_EnableIrq(GpioPortC,GpioPin2,GpioIrqFalling); //PC02 RST2
Gpio_EnableIrq(GpioPortD,GpioPin6,GpioIrqFalling); //PD06 SIG
Lpm_GotoLpmMode();//进入休眠
gotoTask_Start;
问题关键是,为什么前几次可以正常唤醒,然后怎么就突然唤不醒了?(这里保证中途没有改变I/O触发设置)!!! 大家不用围观了,问题已解决。 能讲一下怎么退出休眠模式的吗?
直接配置一个按键中断吗?为什么我进了按键中断 系统没有重新运行。。。 aaxujun1 发表于 2021-3-29 13:02
能讲一下怎么退出休眠模式的吗?
直接配置一个按键中断吗?为什么我进了按键中断 系统没有重新运行。。。 ...
看看是不是进入休眠模式的配置是否正确,是不是配置了退出又进入了。 zhufy 发表于 2021-3-20 19:12
大家不用围观了,问题已解决。
到底是什么原因呢? 只要不是BUG,或者是能规避的BUG就好。 进入的是什么休眠模式啊 楼主如何解决的问题啊 LPtimer也会触发只能这样退出吗 原来是这样啊 恭喜楼主解决问题啊 stcLpmCfg.enSEVONPEND = Se***dEnable; //事件挂起使能
并且修改休眠进入函数Lpm_GotoLpmMode();中的 __WFI();-->__WFE();
页:
[1]