zhufy 发表于 2021-3-19 12:32

急!!!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触发设置)!!!

zhufy 发表于 2021-3-20 19:12

大家不用围观了,问题已解决。

aaxujun1 发表于 2021-3-29 13:02

能讲一下怎么退出休眠模式的吗?
直接配置一个按键中断吗?为什么我进了按键中断 系统没有重新运行。。。

wangjia@ic 发表于 2021-3-29 15:38

aaxujun1 发表于 2021-3-29 13:02
能讲一下怎么退出休眠模式的吗?
直接配置一个按键中断吗?为什么我进了按键中断 系统没有重新运行。。。 ...

看看是不是进入休眠模式的配置是否正确,是不是配置了退出又进入了。

JXCHEN0715 发表于 2021-4-1 23:55

zhufy 发表于 2021-3-20 19:12
大家不用围观了,问题已解决。

到底是什么原因呢?

renesaschina 发表于 2021-4-4 20:15

只要不是BUG,或者是能规避的BUG就好。

tfqi 发表于 2021-4-8 17:22

进入的是什么休眠模式啊

qcliu 发表于 2021-4-8 17:23

楼主如何解决的问题啊

wiba 发表于 2021-4-8 17:24

LPtimer也会触发只能这样退出吗

nawu 发表于 2021-4-8 17:26

原来是这样啊

zljiu 发表于 2021-4-8 17:26

恭喜楼主解决问题啊

zhufy 发表于 2021-4-9 14:29

stcLpmCfg.enSEVONPEND   = Se***dEnable;   //事件挂起使能

并且修改休眠进入函数Lpm_GotoLpmMode();中的   __WFI();-->__WFE();
页: [1]
查看完整版本: 急!!!HC32L136K8TA休眠模式唤不醒