在选定条件调用上述两个函数,系统没有进入睡眠状态。通过打印调试日志确认函数呗调用了。没有定义hal_sleep宏,因为期待只选定条件进入睡眠。
这可能是啥问题?
在选定条件调用上述两个函数,系统没有进入睡眠状态。通过打印调试日志确认函数呗调用了。没有定义hal_sleep宏,因为期待只选定条件进入睡眠。
这可能是啥问题?
您好,不使用协议栈HAL_SLEEP,手动管理休眠可以参考博客:在TMOS系统中手动管理休眠 - JayWell - 博客园 (cnblogs.com)
您是如何判断“系统没有进入睡眠状态”的,是监测休眠电流的吗?
如果休眠电流接近2mA,可能是由于GPIO没有满足唤醒电平的条件,MCU无法休眠,回进入idle等级的休眠。
请看一下这个代码。HDMgr_loop会在主循环中被反调用。 系统初始化阶段只设置两个GPIO中断唤醒。如果shutdown调用成功,第一行PRINT应该很可能打印输出不全,第二个PRINT应该永远不会有机会被执行吧?
我理解shutdwn(0)被唤醒后,应该是复位,并从主程序开头执行吧?
shutdown唤醒后会复位。
首先判断是否进入睡眠,通过功耗测试和打印判断是否执行。
在没有执行到shutdown处,单片机都是处于正常工作状态。
如果是手动调用睡眠,可以参考上面工程师提供的博客,进行最低功耗的休眠,注意蓝牙/tmos任务进行关闭。
如果是没有蓝牙功能,则直接参考PM例程,参考它的调用方式。
shutdown(0)之后,被GPIO中断唤醒后,GPIO中断处理函数会被执行吗?如果会执行,相对于程序的其他部分,中断的执行的时间节点是什么?
shutdown唤醒后直接复位,GPIO中断处理函数不会被执行了。