s1j2h3 发表于 2014-11-27 13:27:42

MSP430 低功耗切换讨论

在MSP430中,官方的思路是在中断函数退出时进行低功耗的切换,用的是标准LPMx_EXIT指令。
这在规格较小的例程中是没问题的,但在实际的应用中,中断函数中调用回调函数,再在回调函数中根据情况决定是否需要切换低功耗状态,以及低功耗级别。
在这种程序下,LPMx_EXIT指令就没有用了,编译器不支持。


如何能解决这个问题,请大家讨论下,或提供点思路。

谢谢{:smile:}

s1j2h3 发表于 2014-11-28 20:22:12

没人这么用么? 自已顶一下

专注XXOO三十年 发表于 2014-11-28 21:04:53

你回调函数返回一个值,用来判断是否退出中断。

s1j2h3 发表于 2014-12-4 13:04:54

不可行。我的程序是分层并模块化的。可能在程序中的任何地方判断是否要退出或切换低功耗模式。

wenliangxc 发表于 2014-12-5 21:37:56

对于这个问题我建议你用状态机解决,和软件看门狗有异曲同之秒

s1j2h3 发表于 2014-12-7 19:43:54

状态切换时,需要同步锁定。而在进入低功耗时,如进行同步,就会。。。。退不出来了

34071417 发表于 2015-2-9 10:56:59

中断直接退出低功耗,在主程序区再次进入低功耗

34071417 发表于 2015-2-9 10:58:34

所有的判断我个人觉得都在主程序取实现,中断退出低功耗,或者恢复时钟,做标志处理等,回到主函数,立刻做完主要的处理,然后置位进入低功耗

divineliu 发表于 2015-2-9 22:03:23

LPMx_EXIT实际上是修改堆棧里寄存器的标志位,退出中断时修改的标志位就退棧到寄存器。知道了这一点,想咋弄都可以吗。

utopiaprince 发表于 2015-2-10 12:58:30

34071417 发表于 2015-2-9 10:58
所有的判断我个人觉得都在主程序取实现,中断退出低功耗,或者恢复时钟,做标志处理等,回到主函数,立刻做 ...

这种方法就是我们现在使用的,中断函数都作为低功耗退出处理,由单独的idle任务来决定什么时候再次进入低功耗状态。

alexla 发表于 2016-10-23 23:35:42

是所有的中断函数都可以退出低功耗模式吗,我将退出低功耗的操作放在看门狗中断里,但是怎么我的按键中断也可以退出低功耗模式呢{:shocked:}
页: [1]
查看完整版本: MSP430 低功耗切换讨论