STM32与手机蓝牙通信超详细教程

        本人也是小白,看了很多博客都没做出来,如果你也是小白,希望这篇文章可以帮助你。

     这篇文章是为了实现蓝牙控制stm32灯翻转,并且stm32每次返回给手机的数字加3,需要其他的功能可直接根据模板改。

      一、  蓝牙插在电脑上与手机通信

软件下载链接:串口调试助手:UartAssist串口调试助手 V5.0.2-软件工具-野人家园 (cmsoft.cn)

                         蓝牙调试器:https://pan.baidu.com/s/1OV5MgmTUjyNafIsshcdh6Q 

                                               提取码:8888(感谢这位大佬的链接)

                         ch340:直接搜索ch340即可

关于这部分大家可以看看这个博主写的,我觉得很详细。
https://blog.csdn.net/weixin_53348716/article/details/123488818

(但是en脚可以直接悬空,不用管它)

我们需要知道蓝牙的名字,波特率,密码。

常用AT指令:

AT+NAME(查询蓝牙名字)

AT+PSWD(查询密码)

AT+UART=9600,0,0(修改蓝牙波特率为9600);

STM32蓝牙与手机通信

首先,先在cubmax里面配置USART;

 波特率要与蓝牙波特率相同,否则不能通讯。(蓝牙一般为9600)

 打开usart.c

/* USER CODE BEGIN 1 */
int fputc(int ch, FILE *f)
{
  HAL_UART_Transmit(&huart2, (uint8_t *)&ch, 1, 0xffff);
  return ch;
}
/* USER CODE END 1 */

打开usart.h

/* USER CODE BEGIN Includes */
#include "stdio.h"
/* USER CODE END Includes */

打开main.c

/* USER CODE BEGIN PV */
char arxbuff,rxbuff[10],kk,gg;   //arxbuff为手机发送的数据
int a=5,i,j;                     //a为单片机向手机发送的字符
/* USER CODE END PV */
 /* USER CODE BEGIN 2 */
	HAL_UART_Receive_IT(&huart2,(unsigned char *)&arxbuff,1);  //打开接收
  /* USER CODE END 2 */
 /* USER CODE BEGIN WHILE */
  while (1)
  {
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
		HAL_GPIO_TogglePin(GPIOA,GPIO_PIN_8); //电平翻转
		for(i=0;i<5000;i++)                   //延时
		{
			for(j=0;j<2000;j++){}
		}
		printf("%d",a);                       //单片机向手机发送
  }
  /* USER CODE END 3 */

 

/* USER CODE BEGIN 4 */
void uart_clear(void)
{
	kk = 0;
	for(gg = 0;gg < 10;gg++)
	{
		rxbuff[gg] = 0;
	}
}
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
	rxbuff[kk] = arxbuff;          //若需要多个串口,在这段代码前写if(huart == &huart1)
	kk++;
	if(rxbuff[kk - 1] == '\n' || rxbuff[kk - 2] == '\r' || rxbuff[kk - 3] == '1')	
	{
		a+=3;		          //需要其他功能,直接改这段代码
		uart_clear();
	}
	HAL_UART_Receive_IT(&huart2,(unsigned char *)&arxbuff,1);
}
/* USER CODE END 4 */

 

 

 

物联沃分享整理
物联沃-IOTWORD物联网 » STM32与手机蓝牙通信超详细教程

发表评论