CH582用HAL_sleep蓝牙连接超时

是不是我TMOS任务定的太频了,现在是外部每次会给一个250ms的GPIO中断,每次中断跑一次TMOS。

之前也有这种状况,但那时候是因为占用了RTC中断,去掉之后蓝牙能连接上,然后断开蓝牙让它放着跑一段时间拿数据,等再次想连蓝牙的时候就会超时连接不上,只能重新上电才能进一次蓝牙。

注意不要在中断函数中调用TMOS任务,并且在中断也不要处理过多的事件,可以中断置标志然后TMOS查询进行处理执行任务。

其次如果有任务执行时间比较长的, 可以适当的将连接间隔给拉大一些,确保任务时长小于连接间隔的一半。

BLE广播间隔和连接间隔(CH582) - SweetTea_lllpc - 博客园 (cnblogs.com)



中断只有一个gpio,用来给标志触发,然后主循环检测到标志触发TMOS任务。

用的外部晶振,现在发现的一个问题是,用hal_sleep后,上电过几秒后功耗会突然下降,我怀疑是这个原因导致蓝牙连接不上。


找到问题了,外部晶振在进入休眠后再唤醒外部晶振没起振


目前使用的唤醒方式有GPIO唤醒和RTC唤醒,使用内外部晶振均可进行唤醒的。

如使用蓝牙功能则直接宏开启HAL_SLEEP进入睡眠即可。



只有登录才能回复,可以选择微信账号登录