This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

在performPeriodicTask()里处理多长时间的事件比较合适



每5ms调用一次performPeriodicTask(),在performPeriodicTask()里处理了比较多的事情,包括使用notify将数据发送出去,实验中,发现蓝牙连上后,过了一小会马上断开,然后将performPeriodicTask()中的一些长时间任务注释掉一部分,蓝牙就能正常工作。

要让蓝牙正常工作,一个任务的处理时间难道不能太长?

  • 现在想搞清楚一个问题,当主机发起连接事件时,从机正在处理某一任务,那么从机是立马暂停该任务去响应主机,还是先处理完该任务,再去响应主机?有哪位大神知道的,请赐教

  • 是的,我遇到过这情况,BLE协议栈是一个高效的协议栈,两种情况会引起连接中断,甚至广播停止:1.过大的软延时  2. 过长的用户任务处理时间;其实两个都是超时。

    处理时间的上限值,你可以用协议栈自带的软延时替换你的用户任务去试试,ST_HAL_DELAY(125);//125约为1ms

    关于你第二楼问题:我们这边也没有找到很完美的解决方法,但我们用的是获取BLE状态回调函数,设备处于广播还是连接,如果连接,那么马上停止用户不必要的任务,而去上传数据。