本帖最后由 bd5fna 于 2025-8-13 14:18 编辑
最近在玩通过蓝牙控制手机APP播放音乐,蓝牙模块用的是BT401.测试的时候是通过电脑串口发指令控制二款手机APP播放和停止都没有问题。用单片机控制的话,其中有一款APP有时正常,有时不能执行指令,随机性很大。蓝牙模块能是正常接收AT命令,返回都是OK的,但手机不正常执行是没有返回信息。请教一下大佬,这可能存在什么问题。
/*********************************************UART初始化 波特率115200/24MHz***********************************/
void UART_Init() {
SCON = 0x50; //8位数据,可变波特率
AUXR |= 0x40; //定时器时钟1T模式
AUXR &= 0xFE; //串口1选择定时器1为波特率发生器
TMOD &= 0x0F; //设置定时器模式
TL1 = 0xCC; //设置定时初始值
TH1 = 0xFF; //设置定时初始值
ET1 = 0; //禁止定时器中断
TR1 = 1; //定时器1开始计时
}
/*********************************************发送一个字符*********************************************/
void UART_SendChar(char c) {
SBUF = c;
while (!TI);
TI = 0;
}
/*********************************************发送字符串*********************************************/
void UART_SendString(char *str) {
while (*str) {
UART_SendChar(*str++);
}
}
/*********************************************蓝牙初始化*********************************************/
void Bluetooth_Init() {
UART_SendString("AT+BD8888\r\n"); // 设置蓝牙名称
delay_ms(100);
UART_SendString("AT+CA30\r\n"); // 设置蓝牙音量为最大30
delay_ms(100);
UART_SendString("AT+B400\r\n"); // 关闭BLE功能,只用蓝牙,不用数传
delay_ms(100);
UART_SendString("AT+CZ\r\n"); // 重启蓝牙
}
/*************************** 蓝牙控制 ******************************/
void Bluetooth_StartTalking()
{
UART_SendString("AT+BA08\r\n"); //发送播放命令
}
void Bluetooth_Stop()
{
UART_SendString("AT+CB\r\n"); //发送停止命令
}
|