蓝牙模块控制

本章我们来学习一下如何使用蓝牙模块控制我们的小车.

在我们的开发板上已经预留了usart2来连接这个蓝牙模块,我们只需要把它插上去就可以像使用普通串口一样来使用它. 这个蓝牙模块其实是把接收到的信息传输到了USART2,并且它的波特率得设置为9600.所以我们要按照下图来对USART2进行配置

这个串口发送过来的数据比较单一,我们可以用前面我们学习过的中断方式去接收它! 同理我们需要开启串口的中断

好啦,Cubemx的响应配置已经搞定啦! 下面我们就要开始撸代码啦!

  1. 第一步,我们要在程序中开启中断接收的方式
1
2
uint8_t blue_rx_data[1]={0}; // 这一行放到全局
HAL_UART_Receive_IT(&huart2,blue_rx_data,1);
  1. 第二步,重写串口中断接收处理回调函数,注意要在回调函数中重新开启中断接收,否则只会接收一次.
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
    if(huart->Instance == USART2){
        uint8_t key = blue_rx_data[0];


        switch (key){
            case 0x41:
                // TODO
                break;
            default:
                // 默认TODO
        }

        HAL_GPIO_TogglePin(GPIOE,GPIO_PIN_10);

        HAL_UART_Receive_IT(&huart2,blue_rx_data,1);
        printf("i=%d\r\n",blue_rx_data[0]);
    }
}
  1. 第三步, 我们就可以去应用市场下载蓝牙串口调试助手来控制程序逻辑啦!