## 蓝牙(Bluetooth)

1.bsp_bluetooth.c 文件里存放的是蓝牙基础驱动文件

2.app_bluetooth.c 文件里存放的是小车应用蓝牙的文件

### 全局变量
全局变量类型注释
g_autoupint自动上报标志
manydisplaychar[80]上报数据字符串
updatachar[80]存储最终发送的数据
lspeedchar[10]左电机速度字符串
rspeedchar[10]右电机速度字符串
daccelchar[10]加速度字符串
dgyrochar[10]陀螺仪数据字符串
csbchar[10]超声波距离字符串
vichar[10]电量字符串
newLineReceivedu8新行接收标志
numint输入字符串长度
startBitu8协议开始位标志
int9numint第9个整数值
inputStringu8[80]接收到的输入字符串
ProtocolStringu8[80]协议字符串
g_newcarstateenCarState小车状态
PID_Originalfloat[6]PID初始值数组
piddisplaychar[50]PID显示字符串
charkpchar[10]比例增益KP字符串
charkdchar[10]微分增益KD字符串
charkspchar[10]速度环KP字符串
charksichar[10]速度环KI字符串
charktpchar[10]转向环KP字符串
charktdchar[10]转向环KD字符串
### 宏定义
宏定义注释
run_car'1'前进命令
back_car'2'后退命令
left_car'3'左转命令
right_car'4'右转命令
stop_car'0'停止命令
### 方法 #### bluetooth_init(void) 初始化蓝牙模块
返回值类型
void
#### bluetooth_send_char(uint8_t ch) 发送一个字符
参数类型注释
chuint8_t要发送的字符
返回值类型
void
#### UART5_Send_ArrayU8(uint8_t *BufferPtr, uint16_t Length) 发送一个字节数组
参数类型注释
BufferPtruint8_t*待发送的数据指针
Lengthuint16_t数据长度
返回值类型
void
#### USART5_Send_Byte(unsigned char byte) 发送一个字节
参数类型注释
byteunsigned char要发送的字节
返回值类型
void
#### bluetooth_send_string(char *s) 发送字符串
参数类型注释
schar*待发送的字符串
返回值类型
void
#### Init_PID(void) 初始化PID参数
返回值类型
void
#### ResetPID(void) 恢复开启时的PID参数
返回值类型
void
#### deal_bluetooth(uint8_t rxbuf) 处理接收到的蓝牙数据
参数类型注释
rxbufuint8_t接收到的数据
返回值类型
void
#### ProtocolCpyData(void) 复制协议数据
返回值类型
void
#### Protocol(void) 解析协议数据
返回值类型
void
#### StringFind(const char *pSrc, const char *pDst) 查找子字符串
参数类型注释
pSrcconst char*源字符串
pDstconst char*目标字符串
返回值类型
找到的起始索引int
#### CalcUpData(void) 计算和更新上报数据
返回值类型
void
#### SendAutoUp(void) 定时自动上报数据
返回值类型
void
#### ProtocolGetPID(void) 获取PID参数
返回值类型
void
### 使用示例

#include "bsp_bluetooth.h"
int main() {
    bluetooth_init();
    bluetooth_send_string("Hello Yahboom!\n");
    while(1);
}
// 当蓝牙接收到消息后会触发该中断
void UART5_IRQHandler(void) {
    uint8_t Rx5_Temp;
    if (USART_GetITStatus(UART5, USART_IT_RXNE) != RESET)
    {
        Rx5_Temp = USART_ReceiveData(UART5);
        bluetooth_send_char(Rx5_Temp);
    }
}