Files
ManGoWalk_STM32/fun/HCBle.c

69 lines
1.3 KiB
C

#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