打印
[技术问答]

急!!!HC32L136K8TA休眠模式唤不醒

[复制链接]
1263|15
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zhufy|  楼主 | 2021-3-19 12:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 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();//进入休眠

        goto  Task_Start;


问题关键是,为什么前几次可以正常唤醒,然后怎么就突然唤不醒了?(这里保证中途没有改变I/O触发设置)!!!

使用特权

评论回复
评论
zhufy 2021-4-9 14:30 回复TA
stcLpmCfg.enSEVONPEND = Se***dEnable; //事件挂起使能 并且修改休眠进入函数 Lpm_GotoLpmMode();中的 __WFI(); --> __WFE(); 
zhufy 2021-4-9 14:25 回复TA
既然有人想知道怎么解决的,那我就说说吧。 首先看应用手册关于休眠模式的说明,其中提到(4 若在中断中进入 sleep,只有优先级高于此中断的中断才能唤醒,先执行高优先级, 再执行低优先级;优先级低于或等于此中断的中断不能唤醒。) 我的程序就是因为这个中断优先级问题才导致的唤不醒。 所以我将低功耗唤醒配置将原来的 中断触发唤醒 --> 事件挂起唤醒 
沙发
zhufy|  楼主 | 2021-3-20 19:12 | 只看该作者
大家不用围观了,问题已解决。

使用特权

评论回复
评论
thinkabout4451 2021-3-22 15:31 回复TA
论坛特点,发个问题,然后解决了,怎么解决不提 
板凳
aaxujun1| | 2021-3-29 13:02 | 只看该作者
能讲一下怎么退出休眠模式的吗?
直接配置一个按键中断吗?为什么我进了按键中断 系统没有重新运行。。。

使用特权

评论回复
地板
wangjia@ic| | 2021-3-29 15:38 | 只看该作者
aaxujun1 发表于 2021-3-29 13:02
能讲一下怎么退出休眠模式的吗?
直接配置一个按键中断吗?为什么我进了按键中断 系统没有重新运行。。。 ...

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

使用特权

评论回复
评论
aaxujun1 2021-3-29 17:18 回复TA
跟FAE讨论完后才知道原来LPtimer也会触发,使系统退出休眠 
5
JXCHEN0715| | 2021-4-1 23:55 | 只看该作者
zhufy 发表于 2021-3-20 19:12
大家不用围观了,问题已解决。

到底是什么原因呢?

使用特权

评论回复
6
renesaschina| | 2021-4-4 20:15 | 只看该作者
只要不是BUG,或者是能规避的BUG就好。

使用特权

评论回复
7
tfqi| | 2021-4-8 17:22 | 只看该作者
进入的是什么休眠模式啊

使用特权

评论回复
8
qcliu| | 2021-4-8 17:23 | 只看该作者
楼主如何解决的问题啊

使用特权

评论回复
9
wiba| | 2021-4-8 17:24 | 只看该作者
LPtimer也会触发  只能这样退出吗

使用特权

评论回复
10
nawu| | 2021-4-8 17:26 | 只看该作者
原来是这样啊

使用特权

评论回复
11
zljiu| | 2021-4-8 17:26 | 只看该作者
恭喜楼主解决问题啊

使用特权

评论回复
12
zhufy|  楼主 | 2021-4-9 14:29 | 只看该作者
stcLpmCfg.enSEVONPEND   = Se***dEnable;   //事件挂起使能

并且修改休眠进入函数  Lpm_GotoLpmMode();中的   __WFI();  -->  __WFE();

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

20

帖子

2

粉丝