在我自己测试使用自己的OS时候,发现在蓝牙打开后并启用HAL_SLEEP时,会卡死系统执行,使用的库是V1.2版本,但V1.1版本没有这个问题,找到根源可能的问题是:
是不是这里会在每次唤醒的时候关闭Systick定时器?
在我自己测试使用自己的OS时候,发现在蓝牙打开后并启用HAL_SLEEP时,会卡死系统执行,使用的库是V1.2版本,但V1.1版本没有这个问题,找到根源可能的问题是:
是不是这里会在每次唤醒的时候关闭Systick定时器?
并且我在寻找资料的时候发现CH573芯片Sleep说明(RTC程序说明) - SweetTea_lllpc - 博客园 (cnblogs.com)
这里提到用户只需要管理好唤醒的事件即可,这个是什么意思?
是控制好中断中的处理内容吗,详细来说就是我们可以控制GPIO唤醒和BAT唤醒中断处理程序,禁止多次定义RTC唤醒中断的意思?
睡眠唤醒后,systick停止,需要重新初始化。
使用蓝牙的时候,进入睡眠只需要开启HAL_SLEEP,唤醒的方式为GPIO唤醒和tmos任务唤醒。唤醒后执行完成任务会自动进入睡眠的,无需再自己调用睡眠。因此只需要管理好自己的唤醒以及执行的任务。
我看到您同事讲到,任务调度函数使用注意事项:
禁止在中断中调用,包括操作任务和传递消息
我们在中断中,是不是可以使用tmos_set_event来设置标志?否则我认为无法管理好自己的唤醒以及执行的任务。
不要在中断中调用tmos任务,可以在中断中置标志,然后某个tmos任务一直查询该标志,查询到则进行执行。