蓝牙模块HC08 和 手机APP数据传输 (STM32代码) 您所在的位置:网站首页 蓝牙怎么传送文件 蓝牙模块HC08 和 手机APP数据传输 (STM32代码)

蓝牙模块HC08 和 手机APP数据传输 (STM32代码)

2023-12-19 19:54| 来源: 网络整理| 查看: 265

目录

一、HC08重要参数

二、主要AT命令解释

三、STM32端操作

1.操作重点

2.GPIO初始化代码

3.UART初始化代码

4.HC08发送数据代码

5.HC08接收数据代码

6.数据处理

四、手机APP端操作

1.操作重点:

2.APP步骤截图:

五、源代码下载

一、HC08重要参数 蓝牙4.0,BLE,主从一体模块上电后,启动需要150ms默认波特率:9600模块未连接时,为AT指令模式,连接后为串口透传模式;空中速率:1Mbps;  (与HC05, HC06等不同, 不能直接与之通信)通信距离:80米; (空旷)工作电流:主机未连21mA,已连9mA; 从机未连8.5mA, 已连9mA; 睡眠0.4uA;  二、主要AT命令解释 AT指令结尾,无需添加换行符;AT指令修改,立即生效,掉电不丢失;AT指令修改,成功时,统一返回OK,查看信息类指令除外;AT指令修改,不成功,不返回任何信息;

三、STM32端操作 1.操作重点  开发板,使用UART与HC08通信, 4线:VCC, GND, TX, RX;UART波特率,使用HC08默认的9600;发送AT指令,无需换行符结尾;只要一条AT指令,设置HC08为从机模式,就能自动连接手机蓝牙APP;模块名称不重要,也不用密码; 连接前:AT模式,蓝灯闪烁;连接后:数据透传模式,不再接受AT命令,蓝灯常亮; 2.GPIO初始化代码   GPIO_InitTypeDef GPIO_InitStructure; // 时钟使能 RCC->APB1ENR |= RCC_APB1ENR_USART3EN; // 使能USART1时钟 RCC->APB2ENR |= RCC_APB2ENR_IOPBEN; // 使能GPIOA时钟 // GPIO_TX引脚配置 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; // TX引脚,配置为复用推挽工作模式 GPIO_Init (GPIOB, &GPIO_InitStructure); // GPIO_RX引脚配置 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING ; // RX引脚,配置为浮空输入工作模式 GPIO_Init (GPIOB, &GPIO_InitStructure); 3.UART初始化代码 NVIC_InitTypeDef NVIC_InitStructure; USART_InitTypeDef USART_InitStructure;   // 中断配置 NVIC_InitStructure .NVIC_IRQChannel = USART3_IRQn; NVIC_InitStructure .NVIC_IRQChannelPreemptionPriority=2 ; // 抢占优先级 NVIC_InitStructure .NVIC_IRQChannelSubPriority = 2; // 子优先级 NVIC_InitStructure .NVIC_IRQChannelCmd = ENABLE; // IRQ通道使能 NVIC_Init(&NVIC_InitStructure); //USART 初始化设置 USART_DeInit(USART3); USART_InitStructure.USART_BaudRate = baudrate; // 串口波特率 USART_InitStructure.USART_WordLength = USART_WordLength_8b; // 字长为8位数据格式 USART_InitStructure.USART_StopBits = USART_StopBits_1; // 一个停止位 USART_InitStructure.USART_Parity = USART_Parity_No; // 无奇偶校验位 USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None; USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx; // 使能收、发模式 USART_Init(USART3, &USART_InitStructure); // 初始化串口 USART_ITConfig(USART3, USART_IT_TXE , DISABLE ); USART_ITConfig(USART3, USART_IT_RXNE, ENABLE); // 使能接受中断 USART_ITConfig(USART3, USART_IT_IDLE, ENABLE); // 使能空闲中断 USART_Cmd(USART3, ENABLE); // 使能串口, 开始工作 4.HC08发送数据代码 // 发送AT指令,或字符串 void HC08_SendString(char* strTemp) { HC08_SendData((uint8_t *)strTemp, strlen(strTemp)); } // 发送指定长度的数据 void HC08_SendData(uint8_t* dataBuf, uint16_t cnt) { while(cnt--) { while((HC08_UARTx->SR & 0X40)==0); // 等待上一次串口数据发送完成 HC08_UARTx->DR = *dataBuf; // 写DR,串口将的发送数据 dataBuf++; } } 5.HC08接收数据代码 void USART3_IRQHandler(void) { static uint8_t cnt=0; static uint8_t RxTemp[256]; // 接收中断 if(USART3->SR & (1SR & (1DR; // 清零IDLE中断标志位!! 序列清零,顺序不能错!! /******************************************************************************** 方式1:可在这里调用外部函数,处理接收到数据(不推荐) 方式2:可在外部判断USARTxRecivedFla==1,然后处理数据区xUSART.USARTxRecivedBuffer 禁 止:不可在中断里调用printf等不可重入函数!!! 示 例: 下面这一行代码, 只作示例, 输出到上位机以观察所收到的最新一帧数据, 可删除 *********************************************************************************/ USART1_printf((char*)xUSART.USART3RecivedBuffer); // 这行代码只作示例,输出USART3收到的最新一帧数据,可删除 } } 6.数据处理 // 本函数为main函数中的while函数 while(1) // while函数死循环,不能让main函数运行结束,否则会产生硬件错误 { // Scheduler_Run(); // 任务轮询器; 如要使用, 清除while中其它函数(移到Scheduler文件中去), 以保证计时的准确 System_DelayMS(100); // 上面已初始化SysTick, 可直接使用delay_ms()、delay_us() LED_RED_TOGGLE; // 红色LED 每0.5秒闪灭一次,以监察系统正常工作 if(xUSART.USART1RecivedFlag==1) // 判断上位机(USART1)是否收到新的数据 { HC08_SendString((char *)xUSART.USART1RecivedBuffer); // 如果收到新数据,就从蓝牙发送出去 xUSART.USART1RecivedFlag=0; // 处理完了,标记清0,不然下一个while循环又会重复操作 } // 处理HC08收到的数据 if(xUSART.USART3RecivedFlag==1) // 判断蓝牙HC08(USART3)是否收到新的数据 { if(xUSART.USART3RecivedBuffer[0]=='0') { LED_BLUE_OFF;} // 判断收到的数据 if(xUSART.USART3RecivedBuffer[0]=='1') { LED_BLUE_ON;} if(xUSART.USART3RecivedBuffer[0]=='3') { LED_BLUE_TOGGLE;} xUSART.USART3RecivedFlag=0; // 处理完了,标记清0,不然下一个while循环又会重复操作 } } 四、手机APP端操作 1.操作重点:

手机设置,打开蓝牙功能,无需搜索连(接在APP里搜索);手机设置,打开位置功能!! 不开位置时搜索不到HC08;必须使用BLE协议的APP,下图二维码为HC蓝牙助手; 

2.APP步骤截图:

五、源代码下载

需要代码的兄弟,可通过以下方式下载代码:

1:CSDN资源:HC08与手机蓝牙APP通信.zip_stm32与手机APP通过蓝牙通信-嵌入式文档类资源-CSDN下载

2:Q群文件夹:887199504

互相学习,欢迎指正!~



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有