一、连线
蓝牙 | stm32 |
VCC | 5v |
GND | GND |
TX | PA10 |
RX | PA9 |
二、cubemx配置,用到了USART1,记得开启中断,以及改波特率9600
三、 代码
定义一个变量,用来存储接收到的数据。
uint8_t receivedata;
写回调函数,注意回调函数里一定要加入接收中断函数,否则只能接受一次数据。
在回调函数里我们加入上一次编写的小车运行代码,通过蓝牙发送数据来控制。
/* USER CODE BEGIN 0 */
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
HAL_UART_Transmit_IT(&huart1,&receivedata,1);
if(receivedata == 1){
Go_Ahead();
}else if(receivedata == 2){
Car_Stop();
}
HAL_UART_Receive_IT(&huart1,&receivedata,1);
}
/* USER CODE END 0 */
main函数里只需要写一个接收中断函数就好啦,放在开启定时器PWM通道的下面。
/* USER CODE BEGIN 2 */
HAL_TIM_PWM_Start(&htim3,TIM_CHANNEL_1);
HAL_TIM_PWM_Start(&htim3,TIM_CHANNEL_2);
HAL_UART_Receive_IT(&huart1,&receivedata,1);
/* USER CODE END 2 */
四、运行效果
接收到我们发出的数据后,蓝牙也会发送同样的数据回来,并且执行相应程序。