糖尿病康复,内容丰富有趣,生活中的好帮手!
糖尿病康复 > STM32应用(四)蓝牙HC-05模块

STM32应用(四)蓝牙HC-05模块

时间:2023-12-31 00:30:35

相关推荐

STM32应用(四)蓝牙HC-05模块

文章目录

参考博客1.接收和发送数据2.现象展示

参考博客

串口实现HC-05蓝牙模块与手机通信

欲实现功能

手机发送数字0,1来控制板子上LED0,1,的翻转。

1.接收和发送数据

配置串口,并开启DMA。

开启DMA,注意添加宏定义和变量声明。

/* USER CODE BEGIN USART2_Init 2 */__HAL_UART_ENABLE_IT(&huart2,UART_IT_IDLE); //开启空闲中断HAL_UART_Receive_DMA(&huart2,RxBuffer,RXBUFFER_LEN); //开启DMA的接收/* USER CODE END USART2_Init 2 */

重写printf函数。

int fputc(int c,FILE *stream){uint8_t ch[1]={c};HAL_UART_Transmit(&huart2,ch,1,0xFFFF);return c;}printf("this is a test\n");

可以在手机上看到this is a test,表明电脑数据发送成功。

数据的发送,蓝牙发送的数据显示在电脑上是ASCII码的形式。

例如我手机发送一个 1,在监视窗口显示的就是49。

在配置完成LED0,LED1的相关配置后,写了一个翻转LED的函数,根据手机发送数据的不同,作为一个判断条件,进而执行相应的函数。

void Check_Rx(){if(RX_flag == 1) //判断是否接收完成{printf("Rx_len = %d\n",Rx_len);printf("I got the message %s",RxBuffer);//for(uint8_t i=0;i<Rx_len;i++) //清除接收的标志//{//RxBuffer[i] = 0;//}Rx_len=0;RX_flag = 0;}}void LED_toggle(void){if(RX_flag == 1) //判断是否接收完成{if(RxBuffer[0]==48){HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_5);}else if(RxBuffer[0]==49){HAL_GPIO_TogglePin(GPIOE,GPIO_PIN_5);}}}

2.现象展示

实现灯的翻转。

如果觉得《STM32应用(四)蓝牙HC-05模块》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。