【蓝牙小知识】—蓝牙常用基础函数接口
-------------------------------------------------------------------------------------------------------------------------------------
从机接收数据的处理函数






4、蓝牙从机修改配对模式,添加密钥












GAP_SetParamValue(TGAP_DISC_SCAN, DEFAULT_SCAN_DURATION);是设置单次扫描时长,默认例程是1.5s
扫描间隔:
GAP_SetParamValue(TGAP_DISC_SCAN_INT, 30);
扫描窗口:
GAP_SetParamValue(TGAP_DISC_SCAN_WIND, 10);






uint8_t MacAddr[6];
GetMACAddress(MacAddr);
15、调整2.4G发射功率
CONFIG.h中的配置宏 #define BLE_TX_POWER LL_TX_POWEER_0_DBM
LL_TX_POWEER_0_DBM 表示 0dbm发射功率。

16、调整晶振内置匹配电容
void HSECFG_Capacitance(HSECapTypeDef c); //外部高频32MHZ
void LSECFG_Capacitance(LSECapTypeDef c); //外部低频32.768KHZ





20、蓝牙主机发起连接

数据值——p_evt->data.p_data,





在主函数一直循环的app_uart_process()中,一直判断uart_rx_flag为1时会调用tmos_start_task(Peripheral_TaskID, UART_TO_BLE_SEND_EVT, 2);

在TMOS任务中,UART_TO_BLE_SEND_EVT任务中进行蓝牙发送数据,先回判断是否notify通知是否准备好。,如果没有连接到对应的notify的handle值,就会清空接收的FIFO

然后会判断FIFO长度,调用 app_drv_fifo_read 函数从FIFO中读取数据。读取的数据将被存储在 to_test_buffer 指向的缓冲区中

将从FIFO中读取的to_test_buffer数据复制到分配的内存noti.pValue。
调用 ble_uart_notify 函数发送BLE通知
如果BLE通知发送失败,会释放之前申请的内存,重新启动任务,但是如果发送成功,会重置读取到长度。

如果是发送失败的情况下,会进入到case SEND_TO_BLE_SEND_FAILED中,重新分配内存,重新从FIFO中读取的to_test_buffer数据复制到分配的内存noti.pValue。然后再进行发送蓝牙BLE通知。

将串口TX发送来的数据,先中断接收后,uart_rx_flag串口接收标志位为1后,启动UART_TO_BLE_SEND_EVT任务,在TMOS任务中,将存放串口数据的数组to_test_buffer,通过tmos_memcpy(req.pValue, to_test_buffer, req.len); 将串口数据复制到req.pValue之后,蓝牙发送这个req.pValue数组值。

浙公网安备 33010602011771号