在performPeriodicTask()里处理多长时间的事件比较合适
时间:10-02
整理:3721RD
点击:
每5ms调用一次performPeriodicTask(),在performPeriodicTask()里处理了比较多的事情,包括使用notify将数据发送出去,实验中,发现蓝牙连上后,过了一小会马上断开,然后将performPeriodicTask()中的一些长时间任务注释掉一部分,蓝牙就能正常工作。
要让蓝牙正常工作,一个任务的处理时间难道不能太长?
现在想搞清楚一个问题,当主机发起连接事件时,从机正在处理某一任务,那么从机是立马暂停该任务去响应主机,还是先处理完该任务,再去响应主机?有哪位大神知道的,请赐教
是的,我遇到过这情况,BLE协议栈是一个高效的协议栈,两种情况会引起连接中断,甚至广播停止:1.过大的软延时 2. 过长的用户任务处理时间;其实两个都是超时。
处理时间的上限值,你可以用协议栈自带的软延时替换你的用户任务去试试,ST_HAL_DELAY(125);//125约为1ms
关于你第二楼问题:我们这边也没有找到很完美的解决方法,但我们用的是获取BLE状态回调函数,设备处于广播还是连接,如果连接,那么马上停止用户不必要的任务,而去上传数据。
谢谢您的回答