在蓝牙串口例程中,连接参数都是在main.c文件中以宏定义的形式进行设置,每个宏定义的含义后面都有注释。如下图所示:
如果是由于代码逻辑导致的断开连接,一般都会触发看门狗导致芯片复位,所以可以检测一下断开连接的时候芯片有没有复位。一般有两种情况,一个是刚连接就断开,在连接成功之后执行的一些代码有问题,直接排查连接之后执行的函数即可。另一种情况就是连接成功之后,可以传输数据,但是会随机断开,有时候连接很稳定。尤其对于定时发送数据的时候,当把时间间隔调的长一点时,稳定性明显提高;时间间隔短的时候稳定性就明显降低。出现这种情况是因为BLE将数据发送出去之后需要收到底层的确认信号才能进行下一次发送,如果在没有收到底层的确认信号就调用发送函数会报错,从而触发看门狗复位导致断开连接。所以在高数据率通信的情况下,调用BLE发送函数之后,一定要在收到底层的确认信号之后才能再次调用BLE发送函数进行下一次数据的发送。以NRF52832的蓝牙串口例程为例,当我们调用发送函数ble_nus_string_send发送函数发送数据之后,如果发送成功则会进入ble_nus_on_ble_evt(串口服务的ble事件中断),该函数中有一个事件为发送完成BLE_GATTS_EVT_HVN_TX_COMPLETE,如下图所示: