#include "HCBle.h" // 外部变量引入区 extern UART_HandleTypeDef huart1; /* 变量定义区 */ char HC_Send_Data[128]; uint8_t HC_Recevie[RX_DataSize]; // 蓝牙接收缓存 volatile uint16_t rx_index = 0; //作为接收字符串指针 volatile uint8_t data_received = 0; // 0 --- 未接收 1 --- 接收 uint8_t rx_data; //接收字符 // 发送数据 void HCBle_SendData(char *p,...) { va_list ap; va_start(ap,p); vsprintf(HC_Send_Data,p,ap); va_end(ap); // 编译控制 #ifdef DEBUG_EN // 信息输出接口 HAL_UART_Transmit(&huart1,(uint8_t *)HC_Send_Data,strlen(HC_Send_Data),1); // HAL_UART_Transmi(&huart1,(uint8_t *)formatBuf,strlen(formatBuf),1); // 对于没有使用中断的串口发送,是需要加入一个阻塞的 #endif } // 对于发送数据 可以加入一个DMA // 蓝牙数据接收 void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart) { if(huart->Instance == USART1) { if(rx_data == '\n') { if(rx_index > 0) { HC_Recevie[rx_index] = '\0'; data_received = 1; rx_index = 0; //我认为接收完字符串后 把字符传给别的处理后 需要清除这里的字符串 memset }else if(rx_index < RX_DataSize - 1) { }else { rx_index = 0; //缓冲区溢出,重置 memset(HC_Recevie,'\0',RX_DataSize); } } HAL_UART_Receive_IT(huart,&rx_data,1); } } // 接下来就是定义 Json数据处理 以及 发送数据给手机App