最近在做平衡小车,用的是stm32cubeIDE进行程序编写,目前是在做蓝牙遥控部分,从手机的蓝牙串口调试助手aap上发送指令A,通过小车上的OLED可以显示接收到的指令是A,但是用于if判断语句时,执行不了里面的语句,我猜想是接收到的指令与if(uart_receive== (uint8_t*)0x5A)里我输入的指令不匹配造成的,请问一下各位大神,这个问题怎么解决呀?
下面是代码:
//usart接收中断函数
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
if (huart->Instance == USART2)
{
HAL_UART_Receive_IT(&huart2,uart_receive,1);
RunState();
printf("Flag_Qian= %d\r\n",Flag_Qian);
printf("Flag_Hou= %d\r\n",Flag_Hou);
printf("Flag_Left= %d\r\n",Flag_Left);
printf("Flag_Right= %d\r\n",Flag_Right);
// rxCompleted=SET; //接收完成
// __HAL_UART_ENABLE_IT(huart, UART_IT_IDLE); //�?�? IDLE 中断
}
}
//执行函数
void RunState(void)
{
if (uart_receive > (uint8_t*)10)
{
if(uart_receive== (uint8_t*)0x5A)
Flag_Qian=0,Flag_Hou=0,Flag_Left=0,Flag_Right=0;
else if(uart_receive==(uint8_t*)0x41)
Flag_Qian=1,Flag_Hou=0,Flag_Left=0,Flag_Right=0;
else if(uart_receive==(uint8_t*)0x45)
Flag_Qian=0,Flag_Hou=1,Flag_Left=0,Flag_Right=0;
else if(uart_receive==(uint8_t*)0x42||uart_receive==(uint8_t*)0x43||uart_receive==(uint8_t*)0x44)
Flag_Qian=0,Flag_Hou=0,Flag_Left=0,Flag_Right=1;
else if(uart_receive==(uint8_t*)0x46||uart_receive==(uint8_t*)0x47||uart_receive==(uint8_t*)0x48) //ÓÒ
Flag_Qian=0,Flag_Hou=0,Flag_Left=1,Flag_Right=0;
else
Flag_Qian=0,Flag_Hou=0,Flag_Left=0,Flag_Right=0;
}
}