STM32—驱动BT-06蓝牙模块传输数据
文章目录
- BT-06简介
- 数据透传
- 配置串口
- USART1初始化函数
- USART2初始化函数
- USART2的NVIC配置
- USART1串口重映射
BT-06简介
BT06蓝牙模块是专为智能无线数据传输而打造,遵循V3.0 蓝牙规范。本模块支持UART接口,并支持SPP蓝牙串口协议,具有成本低、体积小、功耗低、收发灵敏性高等优点,只需配备少许的外围元件就能实现其强大功能。
BT-06蓝牙模块驱动简单,只需要4根线就可以驱动:
- RXD
- TXD
- GND
- VCC
将电源接在5V供电口上,TXD、RXD就是其数据传输的接口,BT-06是以串口的方式驱动的,只需要将蓝牙的TXD、RXD接口对应接在串口的RXD、TXD上,就可以进行数据传输。
数据透传
当BT-06上电,手机APP与蓝牙配对成功后,BT-06即进入数据透传模式。
数据透传:透传是指与传输网络的介质、调制解调方式、传输方式、传输协议无关的一种数据传送方式。数据透传即透明传送,是指在数据的传输过程中,通过无线的方式这组数据不发生任何形式的改变,仿佛传输过程是透明的一样,同时保证传输的质量,原封不动地到了最终接收者手里。
也就是说,连接好蓝牙后,从串口发送出的所有消息都可以原封不动的传输到手机APP中,注意!是原封不动,所以要想驱动BT-06,本质上是驱动串口来传输数据,所以接下来的主要任务就是驱动开发板上的串口进行数据传输。
配置串口
由于我是第一次搞蓝牙,所以比较谨慎,分了几步:
- USART1作为向上位机打印调试信息的串口
- USART2用来连接蓝牙接口,进行传输数据
USART1初始化函数
void USART1_Init( void )
{USART_InitTypeDef USART_InitStruct;GPIO_InitTypeDef GPIO_InitStruct;RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOB, ENABLE );RCC_APB2PeriphClockCmd( RCC_APB2Periph_USART1, ENABLE );/* 开启时钟 USART1在APB2总线 USART2在APB1总线 */GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;/* USART1 Tx:PA9 */GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AF_PP;//复用输出GPIO_InitStruct.GPIO_Pin = GPIO_Pin_9;GPIO_Init(GPIOA, &GPIO_InitStruct);/* USART1 Rx:PA10 */GPIO_InitStruct.GPIO_Pin = GPIO_Pin_10;GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IN_FLOATING;//浮空输入GPIO_Init(GPIOA, &GPIO_InitStruct);/* USART1配置 */USART_InitStruct.USART_BaudRate = 9600;USART_InitStruct.USART_HardwareFlowControl = USART_HardwareFlowControl_None;USART_InitStruct.USART_Mode = USART_Mode_Tx|USART_Mode_Rx;USART_InitStruct.USART_Parity = USART_Parity_No;USART_InitStruct.USART_StopBits = USART_StopBits_1;USART_InitStruct.USART_WordLength = USART_WordLength_8b;USART_Init(USART1, &USART_InitStruct);/* 使能串口 *//* 容易忽略 */USART_Cmd( USART1, ENABLE );}
USART2初始化函数
void USART2_Init( void )
{USART_InitTypeDef USART_InitStruct;GPIO_InitTypeDef GPIO_InitStruct;RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOA , ENABLE );RCC_APB1PeriphClockCmd( RCC_APB1Periph_USART2, ENABLE );USART_DeInit(USART2);GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;/* USART2 Tx:PA2 */GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AF_PP;GPIO_InitStruct.GPIO_Pin = GPIO_Pin_2;GPIO_Init(GPIOA, &GPIO_InitStruct);/* USART2 Rx:PA3 */GPIO_InitStruct.GPIO_Pin = GPIO_Pin_3;GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IN_FLOATING;GPIO_Init(GPIOA, &GPIO_InitStruct);/* USART2串口配置 */USART_InitStruct.USART_BaudRate = 9600;USART_InitStruct.USART_HardwareFlowControl = USART_HardwareFlowControl_None;USART_InitStruct.USART_Mode = USART_Mode_Tx|USART_Mode_Rx;//配置为发送和接收模式,实现发送接收数据USART_InitStruct.USART_Parity = USART_Parity_No;USART_InitStruct.USART_StopBits = USART_StopBits_1;USART_InitStruct.USART_WordLength = USART_WordLength_8b;USART_Init(USART2, &USART_InitStruct);/* USART2的中断优先级配置 */USART2_NVIC_Config();/* 打开USART_IT_RXNE标志中断,即接收数据寄存器不为空中断,收到数据就进入中断 */USART_ITConfig( USART2, USART_IT_RXNE, ENABLE );/* 使能串口 */USART_Cmd( USART2, ENABLE );
}
USART2的NVIC配置
/* USART2 的中断优先级配置,需要在中断中处理数据的接收 */
void USART2_NVIC_Config( void )
{NVIC_InitTypeDef NVIC_InitStruct;NVIC_PriorityGroupConfig( NVIC_PriorityGroup_2 );NVIC_InitStruct.NVIC_IRQChannel = USART2_IRQn;NVIC_InitStruct.NVIC_IRQChannelCmd = ENABLE;NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority = 0;NVIC_InitStruct.NVIC_IRQChannelSubPriority = 1;NVIC_Init( &NVIC_InitStruct );
}
USART1串口重映射
/* USART1 的重映射 */
/* 1.勾选MicroLIB2.添加头文件:stdio.h
*/
int fputc( int ch, FILE *f )
{USART_SendData( USART1, ( uint8_t ) ch );/* 等待发送完成 */while( USART_GetFlagStatus( USART1, USART_FLAG_TXE) == RESET );return ch;
}
STM32—驱动BT-06蓝牙模块传输数据相关推荐
- C51编程23-应用篇(HC 06蓝牙模块)
现在的手机,平板,笔记本电脑都会自带蓝牙.本文将会介绍51单片机使用HC 06 蓝牙模块实现手机与笔记本电脑的通讯. HC 06 模块 购买HC 06模块后需要检测蓝牙模块是否是好的,使用串口线与 ...
- STM32—驱动HC-SR04超声波测距模块
文章目录 超声波测距原理 HC-SR04工作原理 STM32实现驱动 1.引脚的配置 2.时序控制 3.时间差测量 4.如何将距离测出来 超声波测距原理 利用HC-SR04超声波测距模块可以实现比较精 ...
- 如何用手机控制stm32单片机,通过蓝牙模块
电脑与单片机通信原理 我们用到的串口调试助手,就是通过电脑上面的虚拟串口和单片机的串口进行通信从而来调试.在建立通信的过程中,我们需要把电脑上虚拟串口的波特率,数据位,奇偶校验位,停止位与单片机上面的 ...
- 基于stm32通过HC_05(ZS-040)蓝牙模块用手机控制stm32开发板上led灯的亮灭
文章目录 前言 一.HC-05蓝牙是什么? 二.应用实例步骤 1.使用AT指令对蓝牙的初始化 2.打开手机蓝牙助手查看是否搜索到该蓝牙 3.用蓝牙模块代替TTL连接stm开发板 4.创建项目开始配置相 ...
- STM32学习笔记——HC05蓝牙模块的配置流程
两块HC05,现将二者分别配置为主机.从机 首先,一直按住HC05模块上的小按键,然后给其上电,直到上电完成,松开小按键.此时你会发现,模块上的指示灯1 秒亮 1 次,模块进入 AT 状态.我用USB ...
- STM32学习记录——ATK-HC05蓝牙模块
一.结构图 二.使用 大家一开始用这个模块大多应该都是看的正点原子的视频教程,但按照视频来接线,会发现lcd上一直显示ATK-HCO5 error,我也是,用串口助手试了很久都没用,后来才看到解决方式 ...
- STM32驱动Marvell 88W8686 WiFi模块代码说明(20180129版)
一.概述 88W8686是Marvell公司2007年推出的一款SDIO Wi-Fi芯片,使用简单的SPI或SDIO协议就可以与单片机连接起来,操作方便,具有创建无密码或带有WEP密码的Ad-Hoc热 ...
- 【STM32】 STM32驱动URM04超声波测距模块
URM04简介: URM04采用了RS485串行通信总线的架构,支持多传感器的并行工作,有着两个RS-485接口,最多支持32个超声波的并联, 内置温度传感器辅助校正距离值,同时支持温度的测量 应用场 ...
- STM32F103学习记录——通过额外添加串口接口来接入ZigBee/蓝牙模块实现数据的远程传输
目录 项目场景 硬件准备 实现过程 实现缘由 原理展现 成果展现 USB-TTL模块有线数据展示 ZigBee模块远程传输数据展示 最后总结 项目场景 本人在做STM32硬件开发项目中,传输数据这一块 ...
最新文章
- 使用ssh连接到centos7中docker容器
- R语言构建xgboost模型:模型的特性重要度计算及可视化、模型对应的结构树(文本文件)
- VMware猛涨vSphere价格 并减少版本数量
- 配置React的Babel 6和Webpack 2环境
- python新建excel表格-python xlwd对excel(表格)写入详解
- iMX8方案服务-辰汉
- linux启动顺序怎么修改,怎样修改启动顺序?
- 30 | 套路篇:如何迅速分析出系统I/O的瓶颈在哪里?
- oracle cpu 100%原因,oracle 12.1 cpu 100%
- matlab 图像常用函数
- SPOJ NSUBSTR(后缀自动机)
- 我来重新学习 javascript 的面向对象(part 1)
- FX DocuCentre S2011 打印机设置双面打印
- 【office卸载】如何彻底卸载office2016
- ssm基于web的教务管理系统毕业设计源码261620
- Unity3d和连接MySQL数据库实现登陆注册等功能
- 推荐一款护眼的软件——f.lux。它可以随着时间,自己调节色温
- 高通see架构ppg测试流程sns_client_test_cpp
- 基于Java Swing界面编程教学
- RFID 中间件规范 -- ALE 介绍