文章目录

  • 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蓝牙模块传输数据相关推荐

  1. C51编程23-应用篇(HC 06蓝牙模块)

    现在的手机,平板,笔记本电脑都会自带蓝牙.本文将会介绍51单片机使用HC 06 蓝牙模块实现手机与笔记本电脑的通讯.   HC 06 模块 购买HC 06模块后需要检测蓝牙模块是否是好的,使用串口线与 ...

  2. STM32—驱动HC-SR04超声波测距模块

    文章目录 超声波测距原理 HC-SR04工作原理 STM32实现驱动 1.引脚的配置 2.时序控制 3.时间差测量 4.如何将距离测出来 超声波测距原理 利用HC-SR04超声波测距模块可以实现比较精 ...

  3. 如何用手机控制stm32单片机,通过蓝牙模块

    电脑与单片机通信原理 我们用到的串口调试助手,就是通过电脑上面的虚拟串口和单片机的串口进行通信从而来调试.在建立通信的过程中,我们需要把电脑上虚拟串口的波特率,数据位,奇偶校验位,停止位与单片机上面的 ...

  4. 基于stm32通过HC_05(ZS-040)蓝牙模块用手机控制stm32开发板上led灯的亮灭

    文章目录 前言 一.HC-05蓝牙是什么? 二.应用实例步骤 1.使用AT指令对蓝牙的初始化 2.打开手机蓝牙助手查看是否搜索到该蓝牙 3.用蓝牙模块代替TTL连接stm开发板 4.创建项目开始配置相 ...

  5. STM32学习笔记——HC05蓝牙模块的配置流程

    两块HC05,现将二者分别配置为主机.从机 首先,一直按住HC05模块上的小按键,然后给其上电,直到上电完成,松开小按键.此时你会发现,模块上的指示灯1 秒亮 1 次,模块进入 AT 状态.我用USB ...

  6. STM32学习记录——ATK-HC05蓝牙模块

    一.结构图 二.使用 大家一开始用这个模块大多应该都是看的正点原子的视频教程,但按照视频来接线,会发现lcd上一直显示ATK-HCO5 error,我也是,用串口助手试了很久都没用,后来才看到解决方式 ...

  7. STM32驱动Marvell 88W8686 WiFi模块代码说明(20180129版)

    一.概述 88W8686是Marvell公司2007年推出的一款SDIO Wi-Fi芯片,使用简单的SPI或SDIO协议就可以与单片机连接起来,操作方便,具有创建无密码或带有WEP密码的Ad-Hoc热 ...

  8. 【STM32】 STM32驱动URM04超声波测距模块

    URM04简介: URM04采用了RS485串行通信总线的架构,支持多传感器的并行工作,有着两个RS-485接口,最多支持32个超声波的并联, 内置温度传感器辅助校正距离值,同时支持温度的测量 应用场 ...

  9. STM32F103学习记录——通过额外添加串口接口来接入ZigBee/蓝牙模块实现数据的远程传输

    目录 项目场景 硬件准备 实现过程 实现缘由 原理展现 成果展现 USB-TTL模块有线数据展示 ZigBee模块远程传输数据展示 最后总结 项目场景 本人在做STM32硬件开发项目中,传输数据这一块 ...

最新文章

  1. 使用ssh连接到centos7中docker容器
  2. R语言构建xgboost模型:模型的特性重要度计算及可视化、模型对应的结构树(文本文件)
  3. VMware猛涨vSphere价格 并减少版本数量
  4. 配置React的Babel 6和Webpack 2环境
  5. python新建excel表格-python xlwd对excel(表格)写入详解
  6. iMX8方案服务-辰汉
  7. linux启动顺序怎么修改,怎样修改启动顺序?
  8. 30 | 套路篇:如何迅速分析出系统I/O的瓶颈在哪里?
  9. oracle cpu 100%原因,oracle 12.1 cpu 100%
  10. matlab 图像常用函数
  11. SPOJ NSUBSTR(后缀自动机)
  12. 我来重新学习 javascript 的面向对象(part 1)
  13. FX DocuCentre S2011 打印机设置双面打印
  14. 【office卸载】如何彻底卸载office2016
  15. ssm基于web的教务管理系统毕业设计源码261620
  16. Unity3d和连接MySQL数据库实现登陆注册等功能
  17. 推荐一款护眼的软件——f.lux。它可以随着时间,自己调节色温
  18. 高通see架构ppg测试流程sns_client_test_cpp
  19. 基于Java Swing界面编程教学
  20. RFID 中间件规范 -- ALE 介绍

热门文章

  1. 阿里云服务器一年价格是多少?阿里云服务器一般多少钱一年?
  2. 苏宁拼购818“煽风点火” 拿下品质拼购第一品牌
  3. 华为交换机接口批量加入vlan的方法
  4. Android图像识别扫名片识别技术SDK
  5. expect和shell脚本自动登录跳板机和使用AppleScript实现自动登录vpn软件
  6. android自学难吗!我离职后面试收割小米等大厂offer,详细的Android学习指南
  7. 郑州下雪天黑心司机抬高乘车价
  8. python下载哪个好_Python和Java到底哪个更好?
  9. 大连市公用事业联合收费处谈水电气收费等问题
  10. layui设置单元格行高