我使能HAL_KEY后,程序就不会再进入函数
CH58X_LowPower();了,难道是我按键扫描耗时太长了吗,,有什么方法可以看到每个tmos循环中执行完所有事件耗时吗
我使能HAL_KEY后,程序就不会再进入函数
CH58X_LowPower();了,难道是我按键扫描耗时太长了吗,,有什么方法可以看到每个tmos循环中执行完所有事件耗时吗
建议参考PM例程,使用GPIO中断的方式检测按键。
如果一定要用TMOS系统自带的按键检测,可以参考博客:在TMOS系统中添加按键检测功能 - JayWell - 博客园 (cnblogs.com)
上述两种方式,一种对应GPIO唤醒,另一种对应RTC唤醒,都是可以在使能HAL_SLEEP的情况下进休眠的。
如何判断没有进入CH58X_LowPower函数的,是在CH58X_LowPower中添加了串口打印吗?如果是每次进入CH58X_LowPower函数都立即return了,执行不到sleep休眠,可能是按键扫描频次太高或是TMOS事件阻塞太久。
如果是一次都没有进入CH58X_LowPower,注意查看HAL_SLEEP宏有没有配置好。
HAL_SLEEP定义了,使能按键就不打印,关掉按键就可以打印这句
我设置了每次循环都执行一次key事件,即使这个事件中没有任何操作,也不会进入CH58X_LowPower()
如果设置为每10次执行一次key事件,就可以正常进入CH58X_LowPower()了。
按理来说如果key事件内没有任何操作的话,不是几乎一瞬间就执行完的吗,怎么会影响到进入睡眠呢
周期单位给1,太快了。协议栈是时间执行完毕后没有事件了,才会执行CH58X_LowPower接口;并且CH58X_LowPower接口里也会有判断,距离下一次事件的间隔小于1ms,不会休眠。
针对休眠+键扫的功能,用HAL_KEY高频次执行事件的方案太浪费了,参考键盘方案中的逻辑比较合适:用GPIO中断来检测是否有按键被按下;按下后短时间内,使用idle等级的休眠,加快连续按键之间的反应速度;判断长时间没有按键按下了,再用sleep休眠。
懂了,另外ch583芯片除了手册和蓝牙开发说明,还有更详细的手册吗,感觉这两个内容不够全
需要哪些资料呢?针对具体问题,网上有不少博主写过攻略;另外论坛的往期帖子也可以参考,右上角搜索一下关键字。
CH579 CH573 CH582 芯片使用知识分享目录 - debugdabiaoge - 博客园 (cnblogs.com)