赞
踩
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个串口。UART5连接蓝牙模块。
基础配置一下
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 */
发送01 0D 0A(0D 0A是两个ASCII码,分别代表回车(CR)和换行(LF))
发送02 0D 0A
如果需要在电脑上显示,我们把发送给手机的端口huart5改成huart1就可以了。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。