蓝牙通信(实现手机与stm32连接)
1.准备工作
- 蓝牙模块HC-05模块
- 安卓APP软件
HC-05蓝牙模块支持AT指令。要进入AT指令模式,需要先按住蓝牙模块上的按键,接通电源,当模块上的LED灯进入慢闪后再松开按键,此时已经进入AT指令模式,可以进行AT指令设置1。
常用的AT指令包括:
AT+VERSION? |
返回HC-05的软件版本号 |
AT+NAME? |
返回HC-05的名字 |
AT+UART? |
返回蓝牙波特率 |
AT+UART=115200,0,0 |
设置串口波特率115200,1位停止位,无校验位 |
AT+NAME=bluetooth |
修改蓝牙模块的名字为bluetooth |
AT+PSWD? |
查询配对密码 |
AT+PSWD=”1234” |
设置密码1234 |
AT+ROLE? |
查询主从状态,=1:设置成主,=0:设置成从,=2:设置成回环 |
AT+ROLE=0 |
设置成从 |
AT+ORGL |
恢复出厂默认设置。 |
2.stm32cubemx设置
设置和串口一样,因为需要用到中断,所以我们需要打开中断。
我们打开2个串口。UART5连接蓝牙模块。
3.keil代码
基础配置一下
usart.c下
/* USER CODE BEGIN 1 */
char Buff[255];//存储数据
uint8_t Data; //暂存数据
int Cnt = 0; //计数
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
if(huart ==&huart5)
{
Buff[Cnt++] = (char)Data;
if(Buff[Cnt-1] == 0x0A && Buff[Cnt-2] == 0x0D)//判断是否为回车结尾
{
if(Buff[Cnt-3] == 0x01)
{
flag = 1;
}
if(Buff[Cnt-3] == 0x02)
{
flag = 2;
}
if(Buff[Cnt-3] == 0x03)
{
flag = 3;
}
if(Buff[Cnt-3] == 0x04)
{
flag = 4;
}
if(Buff[Cnt-3] == 0x05)
{
flag = 5;
}
if(Buff[Cnt-3] == 0x06)
{
flag = 6;
}
}
HAL_UART_Receive_IT(&huart5,(uint8_t *)&Data,sizeof(Data));
}
}
///重定向c库函数printf到串口DEBUG_USART,重定向后可使用printf函数
int fputc(int ch, FILE *f)
{
/* 发送一个字节数据到串口DEBUG_USART */
HAL_UART_Transmit(&huart5, (uint8_t *)&ch, 1, 1000);
return (ch);
}
/* USER CODE END 1 */
usart.h
/* USER CODE BEGIN Includes */
#include <stdio.h>
/* USER CODE END Includes */
/* USER CODE BEGIN Private defines */
extern char Buff[255];//存储数据
extern uint8_t Data; //暂存数据
extern int Cnt; //计数
extern int flag;
/* USER CODE END Private defines */
main.c
/* USER CODE BEGIN PTD */
int flag;
/* USER CODE END PTD */
/* USER CODE BEGIN 2 */
HAL_UART_Receive_IT(&huart5,(uint8_t *)&Data,sizeof(Data));
/* USER CODE END 2 */
/* USER CODE BEGIN WHILE */
while (1)
{
switch(flag)
{
case(1):
printf("1");
break;
case(2):
printf("2");
break;
case(3):
printf("3");
break;
case(4):
printf("4");
break;
case(5):
printf("5");
break;
case(6):
printf("6");
break;
default:
printf("0");
break;
}
HAL_Delay(1000);
/* USER CODE END WHILE */
4.实验现象
发送01 0D 0A(0D 0A是两个ASCII码,分别代表回车(CR)和换行(LF))
发送02 0D 0A
文章来源:https://www.toymoban.com/news/detail-478328.html
如果需要在电脑上显示,我们把发送给手机的端口huart5改成huart1就可以了。文章来源地址https://www.toymoban.com/news/detail-478328.html
到了这里,关于基于STM32CUBEMX,HAL库蓝牙通信的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!