ATK-HC05蓝牙模块的详细说明
前段时间买了个ATK的HC05蓝牙模块。HC05模块是一款高性能主从一体蓝牙串口模块,可以不用知道太多蓝牙相关知识就可以很好的上手。说白了,只是个蓝牙转串口的设备,你只要知道串口怎么编程使用,就可以了, 实现了所谓的透明传输。
2、GND:这个没什么好说的,直接接地就好了
void USART1SendStr(char *str) { while(*str!='\0') { USART_SendData(USART1,*str); while (USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET);/*等待发送完成*/ str++; } }
最好在某个头文件里定义下 #define ATSendCmd(x) USART1SendStr(x) 用 ATSendCmd()来发送AT指令
/*----------------------跟编译器相关,连接标准C库----------------------*/ #ifdef __GNUC__ #define PUTCHAR_PROTOTYPE int __io_putchar(int ch) #else #define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f) #endif /******************************************************** 函数:PUTCHAR_PROTOTYPE 描述:连接标准C库的printf函数 参数:无 返回:无 ********************************************************/ PUTCHAR_PROTOTYPE { USART_SendData(USART2, (uint8_t) ch); while (USART_GetFlagStatus(USART2, USART_FLAG_TC) == RESET){} return ch; }
如上,这样就能使用printf函数了,要学会在编程时候常使用printf函数,显示函数的情况与进程,当发生错误时,这样就能很精准的定位错误位置了。最好还要定义一个宏定义 #define DEBUG 在写printf时最好如下写法:
#ifdef DEBUGprintf("xxxxxxxxxxxxx");#endif
这样的写法,就起了一个宏开关的作用,只要屏蔽#define DEBUG 就能关闭调试信息了。
u16 timeCnt=0; extern u8 timeOut; /******************************************************** 函数:SetTimeOut() 描述:设置超时时间 参数:无 返回:无 ********************************************************/ void SetTimeOut(u16 timeout) { timeCnt=timeout; timeOut=0; TIM_Cmd(TIM2,ENABLE); }
还要写个定时器中断服务函数:
void TIM2_IRQHandler(void) { if(TIM_GetITStatus(TIM2, TIM_IT_Update) != RESET)//检测是否发生溢出更新事件 { //清除TIM2的中断待处理位 TIM_ClearITPendingBit(TIM2 , TIM_FLAG_Update); LED1_Toggle(); if(timeCnt!=0) { timeOut=0; printf("."); timeCnt--; } else { timeOut=1; printf("\r\n定时时间到!\r\n"); TIM_Cmd(TIM2,DISABLE); } } }
在中断服务程序中,一旦超时时间到了,就要关闭定时器,等待下一次设置超时时间再打开。
/******************************************************** 函数:HC05_Reset 描述:复位蓝牙模块 参数:无 返回:无 ********************************************************/ void HC05_Reset(void) { ATSendCmd("AT+RESET\r\n"); curStat=CRESET; //当前状态设置为CRESET SetTimeOut(6); //设置定时时间为4s while(curStat!=NOCMD) //等待蓝牙模块响应 { if(tryAgain || timeOut)//重新发送命令 { printf("蓝牙模块复位失败,重试中!\r\n"); tryAgain=0; ATSendCmd("AT+RESET\r\n"); SetTimeOut(6); //重新设置定时时间为4s } } CloseTimer(); //关闭定时器 Delay_ms(1000); printf("蓝牙模块复位成功!\r\n"); }
这里的curStat的状态是在串口接收程序程序里改变的,如果接收正确curStat=NOCMD,如果接收失败,则tryAgain置1,。
ATK-HC05蓝牙模块的详细说明相关推荐
- 【超详细】C51单片机与HC-05蓝牙模块实现手机点灯
此文记录HC05蓝牙模块在C51单片机上的学习历程 文章目录 一.硬件连接 (1)配置模式下接线 (2)正常模式下接线 二.配置模式操作 三.正常模式 四.使用蓝牙通过蓝牙调试app点灯 1.单片机代 ...
- Arduino使用HC05蓝牙模块与手机连接(转载)
通过本文,可以了解到以下内容: 进入 AT 模式进行蓝牙基本参数设置 Arduino 蓝牙控制 LED 电路设计以及代码编写 利用 Andorid 蓝牙串口调试软件测试功能 进入 At 模式进行蓝牙基 ...
- 利尔达e95蓝牙模块程序_Arduino使用HC05蓝牙模块与手机连接
通过本文,可以了解到以下内容: 进入 AT 模式进行蓝牙基本参数设置 Arduino 蓝牙控制 LED 电路设计以及代码编写 利用 Andorid 蓝牙串口调试软件测试功能 进入 At 模式进行蓝牙基 ...
- HC-05蓝牙模块配对方法及AT指令配置
目录 蓝牙功能介绍 HC-05/06/08异同 HC-05蓝牙模块示意图 连接方式 默认配置 如何配置AT指令? 配置小技巧 配置步骤 验证过程 蓝牙功能介绍 取代传统的数据线,实现无线数据传输,解决 ...
- STM32CubeMX(2)——串口实现HC-05蓝牙模块与手机通信
STM32实现蓝牙与手机通信 使用的蓝牙 STM32Cubemax配置 手机连接蓝牙 代码编写 总结 使用的蓝牙 本文使用的蓝牙是市面上常用的HC-05蓝牙模块 其引脚和STM32的连接为 蓝牙模块 ...
- Arduino使用HC05蓝牙模块与手机连接
通过本文,可以了解到以下内容: 进入 AT 模式进行蓝牙基本参数设置 Arduino 蓝牙控制 LED 电路设计以及代码编写 利用 Andorid 蓝牙串口调试软件测试功能 进入 At 模式进行蓝牙基 ...
- HC-05蓝牙模块,在AT指令模式时输出AT+NAME?无应答问题
前些天买了两个HC-05模块,准备配对做一个无线串口透传. 为了保证效果,特意买了原版带底板的HC-05蓝牙模块,如下图所示: 使用了一个便宜稳定的CH340串口下载模块儿,用于对HC-05模块的AT ...
- hc-05蓝牙模块调试
hc-05蓝牙模块调试 本文主要记录hc-05蓝牙模块调试的过程,包括hc-05蓝牙模块连线,驱动下载,hc-05蓝牙模块模式介绍,AT指令,串口调试以及与安卓手机app连接发送数据.(只列举了我在调 ...
- arduino nano 蓝牙_Arduino使用HC05蓝牙模块与手机连接
通过本文,可以了解到以下内容: 进入 AT 模式进行蓝牙基本参数设置 Arduino 蓝牙控制 LED 电路设计以及代码编写 利用 Andorid 蓝牙串口调试软件测试功能 进入 At 模式进行蓝牙基 ...
最新文章
- 第四范式申请港交所上市:2021上半年营收7.88亿,研发费用占七成
- 如果只能通过IE写博客【Do we write blog just only with IE?】
- cuda合并访问的要求_CUDA优化的冷知识 5 | 似是而非的计时方法
- webservice服务器端获取request对象的三种方式
- Windows下创建动态库
- 20140923 cin.get() getline cin
- 匿名内部类 handler
- DLL分两种?用C#加载,有的成功,有的失败
- JGit、SvnKit - 版本提交日志(1)提取
- List集合之CopyOnWriteArrayList
- 计算机教育部一级学科,教育部学科门类,一级学科有多少个?
- 企业网络安全区域划分的原则和方法
- Qwerty Learner:为键盘工作者设计的单词记忆与英语肌肉记忆锻炼网页
- Squid代理服务器(缓存加速之Web缓存层)
- 关闭vscode链接检查,去掉VSCODE 编辑器的链接下划线
- 《Context Contrasted Feature and Gated Multi-Scale Aggregation for Scene Segmentation》论文阅读
- linux命令行下写for语句,Linux命令行 – 流程控制:for 循环
- 向日葵连接linux无桌面,向日葵控控远程时无画面显示可能的原因及解决办法
- ES7、ES8新特性
- 《Kotlin从小白到大牛》第28章:项目实战1:开发PetStore宠物商店项目
热门文章
- 面试中问的话题Spring工作原理
- c++中cout、cerr、clog的区别
- mysql 去除逗号,MySQL查询删除字符串中最后一个逗号后的所有字符?
- 解读:基于图卷积特征的卷积神经网络的股票趋势预测(文末赠书)
- 织梦后台html编辑器不显示,织梦后台文章内容编辑空白不显示文字解决办法
- Java List去重 Lis集合去重 List去重效率对比 List去重复元素效率对比 List去重效率
- 证券考试和基金考试有什么区别?
- 国内安卓统一推送通道
- android 组件透明,万能小组件透明小组件-万能小组件透明背景设置v1.0.0 安卓版_永辉资源网...
- 【Markdown基础教程】编辑环境的下载