stm32f407Zgt6 与 hc05蓝牙模块通信

  • 步骤
    • stm32f407Zgt6串口配置
      • hc05串口配置

步骤

1.配置 stm32串口
2.配置蓝牙串口
3.通信,主要是stm32串口中断接收数据以及处理数据

stm32f407Zgt6串口配置

这里用的是串口2,即PA2,PA3引脚。PA2为TXD,PA3为RXD。
通信时TX接RX,RX接TX。
代码:
uart2.h

#ifndef __USART_H
#define __USART_H
#include "stdio.h"
#include "stm32f4xx_conf.h"
#include "sys.h"#define USART2_REC_LEN            200
extern u8  USART2_RX_BUF[USART2_REC_LEN];
extern u16 USART2_RX_STA;
void uart2_init(u32 bound);
#endif

uart2.c

#include "sys.h"
#include "usart.h"
#if SYSTEM_SUPPORT_OS
#include "includes.h"
#endifu8 USART2_RX_BUF[USART2_REC_LEN];     //½ÓÊÕ»º³å,×î´óUSART_REC_LEN¸ö×Ö½Ú.
u16 USART2_RX_STA=0;       //½ÓÊÕ״̬±ê¼Ç  u8 flag =1;
//³õʼ»¯IO ´®¿Ú1
//bound:²¨ÌØÂÊ
void uart2_init(u32 bound){//GPIO¶Ë¿ÚÉèÖÃGPIO_InitTypeDef GPIO_InitStructure;USART_InitTypeDef USART_InitStructure;NVIC_InitTypeDef NVIC_InitStructure;RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA,ENABLE); //ʹÄÜGPIOAʱÖÓRCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2,ENABLE);//ʹÄÜUSART1ʱÖÓ//´®¿Ú1¶ÔÓ¦Òý½Å¸´ÓÃÓ³ÉäGPIO_PinAFConfig(GPIOA,GPIO_PinSource2,GPIO_AF_USART1); //GPIOA9¸´ÓÃΪUSART1GPIO_PinAFConfig(GPIOA,GPIO_PinSource3,GPIO_AF_USART1); //GPIOA10¸´ÓÃΪUSART1//USART1¶Ë¿ÚÅäÖÃGPIO_InitStructure.GPIO_Pin = GPIO_Pin_2 | GPIO_Pin_3; //GPIOA9ÓëGPIOA10GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;//¸´Óù¦ÄÜGPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;  //ËÙ¶È50MHzGPIO_InitStructure.GPIO_OType = GPIO_OType_PP; //ÍÆÍ츴ÓÃÊä³öGPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP; //ÉÏÀ­GPIO_Init(GPIOA,&GPIO_InitStructure); //³õʼ»¯PA9£¬PA10//USART1 ³õʼ»¯ÉèÖÃUSART_InitStructure.USART_BaudRate = bound;//²¨ÌØÂÊÉèÖÃ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(USART2, &USART_InitStructure); //³õʼ»¯´®¿Ú1//Usart1 NVIC ÅäÖÃNVIC_InitStructure.NVIC_IRQChannel = USART2_IRQn;//´®¿Ú1ÖжÏͨµÀNVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=3;//ÇÀÕ¼ÓÅÏȼ¶3NVIC_InitStructure.NVIC_IRQChannelSubPriority =3;     //×ÓÓÅÏȼ¶3NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;         //IRQͨµÀʹÄÜNVIC_Init(&NVIC_InitStructure);    //¸ù¾ÝÖ¸¶¨µÄ²ÎÊý³õʼ»¯VIC¼Ä´æÆ÷¡¢USART_ITConfig(USART2, USART_IT_RXNE, ENABLE);//¿ªÆôÏà¹ØÖжÏUSART_Cmd(USART2, ENABLE);  //ʹÄÜ´®¿Ú1
}//*************************************************** 数据以 字符ba结尾
void USART2_IRQHandler(void)
{u8 Res;if(USART_GetITStatus(USART2, USART_IT_RXNE) != RESET)  {Res =USART_ReceiveData(USART2);//(USART1->DR); if((USART2_RX_STA&0x8000)==0){if(USART2_RX_STA&0x4000){if(Res!='a')USART2_RX_STA=0;else USART2_RX_STA|=0x8000;   }else { if(Res=='b')USART2_RX_STA|=0x4000;else{USART2_RX_BUF[USART2_RX_STA&0X3FFF]=Res ;USART2_RX_STA++;if(USART2_RX_STA>(USART2_REC_LEN-1))USART2_RX_STA=0;}        }}          }
}

hc05串口配置

1.进入AT模式
2.发送AT指令
3.与stm32相连,通信

1.蓝牙模块直接与usb转TTL下载器相连,下载器先不插电脑,按住蓝牙模块上的按键key,然后下载器插上电脑,hc05提示灯慢闪,此时进入AT模式。
2.使用串口助手发送指令,此时为hc05与电脑通信,每发送一条指令完成后都会返回OK,若没有返回,则与电脑通信失败。
指令:https://www.cnblogs.com/Sonny-xby/p/11197973.html
发送指令主要设置名称、密码、波特率、停止位和效验位等
名称:AT+NAME= (名称)
密码:AT+PSWD=(密码)
AT+UART=9600,0,0 (波特率为9600,1位停止位,无效验)
3.断开,与stm32相连,注意两者波特率要设置一样。手机下载蓝牙串口助手,刚与stm32相连时hc05为快闪,一次闪一次。hc05与手机蓝牙连上后为快闪,一次闪两次。连上后就可以发送数据了,注意蓝牙发给stm32的数据以ba结尾(中断函数可改)。

stm32f407Zgt6 与 hc05蓝牙模块通信相关推荐

  1. 单片机与HC-05蓝牙模块通信

    单片机与HC-05蓝牙模块通信 一.写在最前面 二.相关介绍 三.电路 一.写在最前面 与物院.材院的同学一起,设计由霍尔元件.电磁铁和单片机等元素构成的水污染测试系统,通过自学完成单片机与HC-05 ...

  2. HC-05蓝牙模块遇到的问题与解决方法及实现和手机通信

    文章目录 1.蓝牙模块的调试--解决无法与设置AT命令的问题 1)问题1:没有搜索到串口 方法1:网上下载驱动 方法2:自己更新驱动 2)问题2:串口打开失败--PL2303HXA自2012已停产,请 ...

  3. STM32控制HC-05蓝牙模块进行通信

    一.HC-05蓝牙模块 1. 简介 HC-05主从一体蓝牙串口模块采用英国CSR公司BlueCore4系列的芯片,符合符合蓝牙2.0+EDR规范,可以同带同种蓝牙功能的电脑.蓝牙主机和手机等智能终端配 ...

  4. STM32CubeMX(2)——串口实现HC-05蓝牙模块与手机通信

    STM32实现蓝牙与手机通信 使用的蓝牙 STM32Cubemax配置 手机连接蓝牙 代码编写 总结 使用的蓝牙 本文使用的蓝牙是市面上常用的HC-05蓝牙模块 其引脚和STM32的连接为 蓝牙模块 ...

  5. 两个hc05蓝牙模块在两块单片机上通信(附完整代码)

    目录 第一步:进入AT模式 第二步:同时插在电脑上实现通信 第三步:单片机上通信 代码链接 所需材料:两个hc05蓝牙,两个usb转串口模块,两块单片机 第一步:进入AT模式 接线图如下所示 HC-0 ...

  6. HC-05蓝牙模块--------手机与STM32通信(代码编写)(上位机配置)保姆级教程

    ⏩ 大家好哇!我是小光,嵌入式爱好者,一个想要成为系统架构师的大三学生. ⏩因为之前无论是电赛还是做项目,都用到了蓝牙模块,如:手机和stm32的通信,电赛中的双车通信,还是遥感小车的stm32与st ...

  7. HC-05蓝牙模块arduino通信实例代码以及注意事项

    HC-05蓝牙模块arduino通信实例代码以及注意事项 HC-05的接线及使用 进入蓝牙的设置模式 进入AT命令模式(设置蓝牙参数) 注意事项 进入AT模式的代码(注意在通电之前让蓝牙模块进入设置模 ...

  8. HC-05蓝牙模块的配置和使用方法

    一.说明 蓝牙传输模块一般通过串口进行通信,即RS232(设备1)<->蓝牙模块<->蓝牙模块<->RS232(设备2).因此,使用蓝牙模块需要配置的参数有串口通信 ...

  9. HC-05蓝牙模块配对方法及AT指令配置

    目录 蓝牙功能介绍 HC-05/06/08异同 HC-05蓝牙模块示意图 连接方式 默认配置 如何配置AT指令? 配置小技巧 配置步骤 验证过程 蓝牙功能介绍 取代传统的数据线,实现无线数据传输,解决 ...

  10. HC-05蓝牙模块简易说明

    HC-05蓝牙模块简易说明 一.指示灯 二.按键 三.默认设置 四.基本使用说明 一.指示灯 指示灯快闪:未连接 指示灯慢闪:AT命令模式 指示灯短亮长灭:已连接 二.按键 按下按键上电:进入AT模式 ...

最新文章

  1. 【Android 逆向】ART 脱壳 ( dex2oat 脱壳 | aosp 中搜索 dex2oat 源码 | dex2oat.cc#main 主函数源码 )
  2. 详解.Net中变量的命名和属性
  3. 时间周期 java_周期和持续时间 / Period and Duration
  4. 正则判断是否有html标签,正则表达式匹配所有HTML标签,除了和
  5. PHP、JS 中 encode/decode
  6. Zookeeper的前世今生
  7. 介绍一款基于SpringBoot开发OA开源产品
  8. LVM基本介绍与常用命令
  9. 页面编码和js文件不同导致的IE6下脚本错误
  10. UE4 - 默认鼠标指针的样式修改自定义
  11. ECTOUCH短信接口替换
  12. 光电编码器与计算机连接模块,光电编码器原理及应用电路-20210310075025.docx--原创力文档...
  13. matlab共轭梯度法解线性方程组,计算方法——共轭梯度法求解线性方程组.pdf
  14. pymol作图-输出PNG格式图片
  15. 在钉钉小程序中实现录音和播放功能实例
  16. python读取webp格式图像
  17. 外卖小程序源码+后台_外卖cps外卖优惠券 赚钱小程序源码
  18. python重启路由器_Python实现路由器的重启和查看实时流量
  19. Golang 浮点数运算 避免精度损失 Decimal包
  20. Android系统ROM+RAM基础裁剪

热门文章

  1. Android仿支付宝信用分仪表盘控件
  2. 我的工程师爸爸 - 音频应用DIY系列之三:汤姆猫
  3. java getsystemtime,草泥马之家-使用javaAgent解除Burp的时间限制
  4. react-native >0.69版本 链接@ant-design/icons-react-native
  5. 我总结了程序员转行得最有出路5个方向
  6. HOJ 2706 Key Task
  7. java流重定向如何分类,Java 文件流与标准流之间的重定向
  8. phpstorm配置phpunit单元测试及PHPunit断言函数
  9. docker安装后,并没有ln到/etc/systemd/system/multi-user.target.wants
  10. AFML读书笔记--Sample weight