日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

蓝牙模块HC05

發(fā)布時(shí)間:2024/8/1 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 蓝牙模块HC05 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

試驗(yàn)都通過:

  • USB-TTL+藍(lán)牙模塊與手機(jī)藍(lán)牙通訊,測(cè)試通過,能夠互發(fā)數(shù)據(jù)并接收;
  • STM32串口藍(lán)牙與手機(jī)藍(lán)牙通訊,測(cè)試通過;輸入1,LED亮,輸入2,LED滅,輸入其它字符,LED亮;
  • STM32串口藍(lán)牙與PC藍(lán)牙通訊,測(cè)試通過;輸入1,LED亮,輸入2,LED滅,輸入其它字符,LED亮;

?

1. USB-TTL驅(qū)動(dòng)安裝,連接藍(lán)牙模塊

?

?

?

2. 藍(lán)牙模塊的調(diào)試

2.1 兩種工作模式:

HC-05藍(lán)牙串口通訊模塊具有兩種工作模式:命令響應(yīng)工作模式和自動(dòng)連接工作模式。在自動(dòng)連接工作模式下模塊又可分為主(Master)、從(Slave)和回環(huán)(Loopback)三種工作角色。

  • 當(dāng)模塊處于自動(dòng)連接工作模式時(shí),將自動(dòng)根據(jù)事先設(shè)定的方式連接的數(shù)據(jù)傳輸
  • 當(dāng)模塊處于命令響應(yīng)工作模式時(shí)能執(zhí)行AT命令,用戶可向模塊發(fā)送各種AT 指令,為模塊設(shè)定控制參數(shù)或發(fā)布控制命令

2.2 進(jìn)入命令響應(yīng)工作模式

進(jìn)入命令響應(yīng)工作模式有兩種方法:

  • 模塊上電,未配對(duì)情況下就是AT模式,波特率為模塊本身的波特率,默認(rèn):9600,發(fā)送一次AT指令時(shí)需要置高一次PIO11;
  • PIO11 置高電平后,再給模塊上電,此時(shí)模塊進(jìn)入AT 模式,波特率固定為:38400,可以直接發(fā)送AT指令。

2.3 什么叫做置高一次PIO11?

在藍(lán)牙模塊中有一個(gè)小按鍵,按一下就置高一次PIO11。也就是說,第一種方法需要每發(fā)送一次AT指令按一次;而第二種方式是長(zhǎng)按的過程中上電,之后就無需再管了,直接發(fā)送AT命令即可。

需要注意一下,兩種進(jìn)入命令響應(yīng)工作模式的方式使用的波特率是不一樣的,建議使用第二種方式。

2.4 怎么區(qū)分進(jìn)了命令響應(yīng)工作模式呢?

在藍(lán)牙模塊上有燈,當(dāng)燈快閃的時(shí)候,就是自動(dòng)連接工作模式;當(dāng)燈慢閃的時(shí)候,就是命令響應(yīng)工作模式。

2.5 串口調(diào)試助手發(fā)送AT命令格式

串口軟件發(fā)送給HC-05藍(lán)牙模塊AT指令 ,必須嚴(yán)格按照格式發(fā)送才可以(即使看不到格式情況),否則返回錯(cuò)誤ERROR或者沒有反應(yīng),格式如下兩種:

1.AT+一個(gè)回車;

2.AT命令+勾選發(fā)送新行

2.6?AT命令

進(jìn)入到命令響應(yīng)工作模式之后,就可以使用串口調(diào)試助手進(jìn)行藍(lán)牙調(diào)試了。

首先有一點(diǎn),AT指令不區(qū)分大小寫下面介紹常用的AT指令:

指令名響應(yīng)含義
ATOK測(cè)試指令
AT+RESETOK模塊復(fù)位
AT+VERSION?+VERSION:<Param> OK獲得軟件版本號(hào)
AT+ORGLOK恢復(fù)默認(rèn)狀態(tài)
AT+ADDR?+ADDR:<Param> OK獲得藍(lán)牙模塊地址
AT+NAME=<Param>OK設(shè)置設(shè)備名稱
AT+NAME?+NAME:<Param> OK獲得設(shè)備名稱
AT+PSWD=<Param>OK設(shè)置模塊密碼
AT+PSWD?+PSWD:<Param> OK獲得模塊密碼
AT+UART=<Param1>,<Param2>,<Param3>,輸入數(shù)據(jù)去掉尖括號(hào)OK設(shè)置串口參數(shù)
AT+UART?+UART:<Param1>,<Param2>,<Param3> OK獲得串口參數(shù)

2.7?AT命令之設(shè)置串口

  • AT+UART?:獲得串口參數(shù),串口的參數(shù)一共有三個(gè),波特率、停止位、檢驗(yàn)位。其取值如下:
參數(shù)名稱取值
波特率

2400、4800、9600、19200、38400、5760、

115200、230400、460800、921600、1382400

停止位

0:1位

1:2位

校驗(yàn)位0:NONE? 1:Odd? 2:Even

設(shè)置藍(lán)牙串口的波特率:115200。之后的內(nèi)容,就會(huì)采用這個(gè)波特率來進(jìn)行通訊。

?

?

3. PC藍(lán)牙模塊與手機(jī)傳輸數(shù)據(jù)

3.1 藍(lán)牙模塊與USB-TTL轉(zhuǎn)換模塊連接,再連接到電腦上,進(jìn)入自動(dòng)連接工作模式,打開軟件野火的多功能調(diào)試助手fireTools或其它串口調(diào)試工具,在設(shè)置中選擇編碼為GB18030或UTF-8。

3.2 手機(jī)下載并打開“藍(lán)牙串口APP”,連接藍(lán)牙模塊,藍(lán)牙名HC05,配對(duì)碼1234,設(shè)置編碼與串口調(diào)試助手一致,在聊天界面下接收發(fā)送數(shù)據(jù)。

3.3 然后在電腦上的串口調(diào)試助手和手機(jī)的“藍(lán)牙串口APP”之間就可以相互傳輸了,互相發(fā)送漢字或字符串試驗(yàn)。偶爾出現(xiàn)亂碼,可能是我的USB-TTL-藍(lán)牙模塊的線太長(zhǎng)的原因,干擾導(dǎo)致。

4.?STM32藍(lán)牙模塊與電腦通訊

藍(lán)牙模塊上電,電腦控制面板搜索藍(lán)牙設(shè)備,密碼匹配,則電腦與透?jìng)髂K將建立起連接,如果以前沒有安裝過藍(lán)牙串口設(shè)備,則系統(tǒng)將自動(dòng)安裝驅(qū)動(dòng)并生成虛擬串口,設(shè)備管理器打開串口設(shè)置通信格式或者使用串口調(diào)試軟件進(jìn)行設(shè)置。打開這個(gè)端口的時(shí)候藍(lán)牙模塊的LED會(huì)由快閃變?yōu)殡p閃,這時(shí)只需要把藍(lán)牙模塊當(dāng)成是電腦的固定波特率的串口一樣使用即可,只不過它是無線的。

5.STM32藍(lán)牙模塊與手機(jī)通訊

實(shí)現(xiàn)功能:手機(jī)通過藍(lán)牙,向STM32單片機(jī)發(fā)送消息,STM32接收到消息之后原封不動(dòng)的返回給手機(jī),同時(shí)輸入1、2、其它字符控制LED燈。

連線:使用USART5進(jìn)行試驗(yàn),也就是說STM32選取PC12(TX)、PD2(RX)來和HC-05進(jìn)行連接,見下圖UART5;同時(shí)手機(jī)通過藍(lán)牙來和HC-05進(jìn)行連接。

原理:手機(jī)通過藍(lán)牙傳輸?shù)紿C-05上,再通過串口和STM32通信;而之前一般都是電腦上通過USB線轉(zhuǎn)串口的方式,通過串口和STM32通信。本質(zhì)上沒有區(qū)別的。

說白了,只是個(gè)藍(lán)牙轉(zhuǎn)串口的設(shè)備,只要知道串口怎么編程使用,就可以了,實(shí)現(xiàn)了所謂的透明傳輸。藍(lán)牙的相關(guān)一切都被封裝起來了,都不需要接觸到。

?

5. STM32控制程序

/********************************************************************************* @file main.c* @author fire* @version V1.0* @date 2013-xx-xx* @brief 測(cè)試led******************************************************************************* @attention** 實(shí)驗(yàn)平臺(tái):秉火 F103-霸道 STM32 開發(fā)板 * 論壇 :http://www.firebbs.cn* 淘寶 :http://firestm32.taobao.com********************************************************************************/ #include "stm32f10x.h" #include "bsp_led.h" #include "bsp_usart.h" #include "bsp_rccclkconfig.h"int main(void) { USART_Config();LED_GPIO_Config();HSE_SetSysClk( RCC_PLLMul_6 );/*********************藍(lán)牙串口輸入輸出、控制LED**********************************************/ printf( "藍(lán)牙串口輸入輸出、控制LED測(cè)試\n" );Usart_SendStr(DEBUG_USARTx, "請(qǐng)輸入1、2、3,觀察LED和返回值:");// Usart_SendByte(DEBUG_USARTx,'A'); // Usart_SendHalfWord(DEBUG_USARTx, 0xff56); // Usart_SendArray(DEBUG_USARTx, a,10);while (1){} } /*********************************************END OF FILE**********************/

?

#include "bsp_usart.h"static void NVIC_Configuration(void) {NVIC_InitTypeDef NVIC_InitStructure;/* 嵌套向量中斷控制器組選擇 */NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);/* 配置USART為中斷源 */NVIC_InitStructure.NVIC_IRQChannel = DEBUG_USART_IRQ;/* 搶斷優(yōu)先級(jí)*/NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;/* 子優(yōu)先級(jí) */NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;/* 使能中斷 */NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;/* 初始化配置NVIC */NVIC_Init(&NVIC_InitStructure); }void USART_Config(void) {GPIO_InitTypeDef GPIO_InitStructure;USART_InitTypeDef USART_InitStructure;// 打開串口GPIO的時(shí)鐘DEBUG_USART_GPIO_APBxClkCmd(DEBUG_USART_GPIO_CLK, ENABLE);// 打開串口外設(shè)的時(shí)鐘DEBUG_USART_APBxClkCmd(DEBUG_USART_CLK, ENABLE);// 將USART Tx的GPIO配置為推挽復(fù)用模式GPIO_InitStructure.GPIO_Pin = DEBUG_USART_TX_GPIO_PIN;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(DEBUG_USART_TX_GPIO_PORT, &GPIO_InitStructure);// 將USART Rx的GPIO配置為浮空輸入模式GPIO_InitStructure.GPIO_Pin = DEBUG_USART_RX_GPIO_PIN;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;GPIO_Init(DEBUG_USART_RX_GPIO_PORT, &GPIO_InitStructure);// 配置串口的工作參數(shù)// 配置波特率USART_InitStructure.USART_BaudRate = DEBUG_USART_BAUDRATE;// 配置 針數(shù)據(jù)字長(zhǎng)USART_InitStructure.USART_WordLength = USART_WordLength_8b;// 配置停止位USART_InitStructure.USART_StopBits = USART_StopBits_1;// 配置校驗(yàn)位USART_InitStructure.USART_Parity = USART_Parity_No ;// 配置硬件流控制USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;// 配置工作模式,收發(fā)一起USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;// 完成串口的初始化配置USART_Init(DEBUG_USARTx, &USART_InitStructure);// 串口中斷優(yōu)先級(jí)配置NVIC_Configuration();// 使能串口接收中斷USART_ITConfig(DEBUG_USARTx, USART_IT_RXNE, ENABLE); // 使能串口USART_Cmd(DEBUG_USARTx, ENABLE); }/* 發(fā)送一個(gè)字節(jié) */ void Usart_SendByte(USART_TypeDef* pUSARTx, uint8_t data) {USART_SendData(pUSARTx, data);while( USART_GetFlagStatus(pUSARTx, USART_FLAG_TXE) == RESET ); }/* 發(fā)送兩個(gè)字節(jié)的數(shù)據(jù) */ void Usart_SendHalfWord(USART_TypeDef* pUSARTx, uint16_t data) {uint8_t temp_h,temp_l;temp_h = (data&0xff00) >> 8 ;temp_l = data&0xff;USART_SendData(pUSARTx, temp_h);while( USART_GetFlagStatus(pUSARTx, USART_FLAG_TXE) == RESET );USART_SendData(pUSARTx, temp_l);while( USART_GetFlagStatus(pUSARTx, USART_FLAG_TXE) == RESET ); }/* 發(fā)送8位數(shù)據(jù)的數(shù)組 */ void Usart_SendArray(USART_TypeDef* pUSARTx, uint8_t *array,uint8_t num) {uint8_t i;for( i=0; i<num; i++ ){Usart_SendByte(pUSARTx, array[i]);}while( USART_GetFlagStatus(pUSARTx, USART_FLAG_TC) == RESET ); }/* 發(fā)送字符串 */ void Usart_SendStr(USART_TypeDef* pUSARTx, uint8_t *str) {uint8_t i=0;do{Usart_SendByte(pUSARTx, *(str+i));i++;}while(*(str+i) != '\0');while( USART_GetFlagStatus(pUSARTx, USART_FLAG_TC) == RESET ); }///重定向c庫函數(shù)printf到串口,重定向后可使用printf函數(shù) int fputc(int ch, FILE *f) {/* 發(fā)送一個(gè)字節(jié)數(shù)據(jù)到串口 */USART_SendData(DEBUG_USARTx, (uint8_t) ch);/* 等待發(fā)送完畢 */while (USART_GetFlagStatus(DEBUG_USARTx, USART_FLAG_TXE) == RESET); return (ch); }///重定向c庫函數(shù)scanf到串口,重寫向后可使用scanf、getchar等函數(shù) int fgetc(FILE *f) {/* 等待串口輸入數(shù)據(jù) */while (USART_GetFlagStatus(DEBUG_USARTx, USART_FLAG_RXNE) == RESET);return (int)USART_ReceiveData(DEBUG_USARTx); } #ifndef __BSP_USART_H #define __BSP_USART_H#include "stm32f10x.h" #include <stdio.h>#define DEBUG_USART1 0 #define DEBUG_USART2 0 #define DEBUG_USART3 0 #define DEBUG_USART4 0 #define DEBUG_USART5 1#if DEBUG_USART1 // 串口1-USART1 #define DEBUG_USARTx USART1 #define DEBUG_USART_CLK RCC_APB2Periph_USART1 #define DEBUG_USART_APBxClkCmd RCC_APB2PeriphClockCmd #define DEBUG_USART_BAUDRATE 115200// USART GPIO 引腳宏定義 #define DEBUG_USART_GPIO_CLK (RCC_APB2Periph_GPIOA) #define DEBUG_USART_GPIO_APBxClkCmd RCC_APB2PeriphClockCmd#define DEBUG_USART_TX_GPIO_PORT GPIOA #define DEBUG_USART_TX_GPIO_PIN GPIO_Pin_9 #define DEBUG_USART_RX_GPIO_PORT GPIOA #define DEBUG_USART_RX_GPIO_PIN GPIO_Pin_10#define DEBUG_USART_IRQ USART1_IRQn #define DEBUG_USART_IRQHandler USART1_IRQHandler#elif DEBUG_USART2 //串口2-USART2 #define DEBUG_USARTx USART2 #define DEBUG_USART_CLK RCC_APB1Periph_USART2 #define DEBUG_USART_APBxClkCmd RCC_APB1PeriphClockCmd #define DEBUG_USART_BAUDRATE 115200// USART GPIO 引腳宏定義 #define DEBUG_USART_GPIO_CLK (RCC_APB2Periph_GPIOA) #define DEBUG_USART_GPIO_APBxClkCmd RCC_APB2PeriphClockCmd#define DEBUG_USART_TX_GPIO_PORT GPIOA #define DEBUG_USART_TX_GPIO_PIN GPIO_Pin_2 #define DEBUG_USART_RX_GPIO_PORT GPIOA #define DEBUG_USART_RX_GPIO_PIN GPIO_Pin_3#define DEBUG_USART_IRQ USART2_IRQn #define DEBUG_USART_IRQHandler USART2_IRQHandler#elif DEBUG_USART3 //串口3-USART3 #define DEBUG_USARTx USART3 #define DEBUG_USART_CLK RCC_APB1Periph_USART3 #define DEBUG_USART_APBxClkCmd RCC_APB1PeriphClockCmd #define DEBUG_USART_BAUDRATE 115200// USART GPIO 引腳宏定義 #define DEBUG_USART_GPIO_CLK (RCC_APB2Periph_GPIOB) #define DEBUG_USART_GPIO_APBxClkCmd RCC_APB2PeriphClockCmd#define DEBUG_USART_TX_GPIO_PORT GPIOB #define DEBUG_USART_TX_GPIO_PIN GPIO_Pin_10 #define DEBUG_USART_RX_GPIO_PORT GPIOB #define DEBUG_USART_RX_GPIO_PIN GPIO_Pin_11#define DEBUG_USART_IRQ USART3_IRQn #define DEBUG_USART_IRQHandler USART3_IRQHandler#elif DEBUG_USART4 //串口4-UART4 #define DEBUG_USARTx UART4 #define DEBUG_USART_CLK RCC_APB1Periph_UART4 #define DEBUG_USART_APBxClkCmd RCC_APB1PeriphClockCmd #define DEBUG_USART_BAUDRATE 115200// USART GPIO 引腳宏定義 #define DEBUG_USART_GPIO_CLK (RCC_APB2Periph_GPIOC) #define DEBUG_USART_GPIO_APBxClkCmd RCC_APB2PeriphClockCmd#define DEBUG_USART_TX_GPIO_PORT GPIOC #define DEBUG_USART_TX_GPIO_PIN GPIO_Pin_10 #define DEBUG_USART_RX_GPIO_PORT GPIOC #define DEBUG_USART_RX_GPIO_PIN GPIO_Pin_11#define DEBUG_USART_IRQ UART4_IRQn #define DEBUG_USART_IRQHandler UART4_IRQHandler#elif DEBUG_USART5 //串口5-UART5 #define DEBUG_USARTx UART5 #define DEBUG_USART_CLK RCC_APB1Periph_UART5 #define DEBUG_USART_APBxClkCmd RCC_APB1PeriphClockCmd #define DEBUG_USART_BAUDRATE 115200// USART GPIO 引腳宏定義 #define DEBUG_USART_GPIO_CLK (RCC_APB2Periph_GPIOC|RCC_APB2Periph_GPIOD) #define DEBUG_USART_GPIO_APBxClkCmd RCC_APB2PeriphClockCmd#define DEBUG_USART_TX_GPIO_PORT GPIOC #define DEBUG_USART_TX_GPIO_PIN GPIO_Pin_12 #define DEBUG_USART_RX_GPIO_PORT GPIOD #define DEBUG_USART_RX_GPIO_PIN GPIO_Pin_2#define DEBUG_USART_IRQ UART5_IRQn #define DEBUG_USART_IRQHandler UART5_IRQHandler#endifvoid USART_Config(void); void Usart_SendByte(USART_TypeDef* pUSARTx, uint8_t data); void Usart_SendHalfWord(USART_TypeDef* pUSARTx, uint16_t data); void Usart_SendArray(USART_TypeDef* pUSARTx, uint8_t *array,uint8_t num); void Usart_SendStr(USART_TypeDef* pUSARTx, uint8_t *str); #endif /* __BSP_USART_H */ //晶振8M改為12M #include "bsp_rccclkconfig.h"void HSE_SetSysClk( uint32_t RCC_PLLMul_x ) {ErrorStatus HSEStatus;// 把RCC 寄存器復(fù)位成復(fù)位值RCC_DeInit(); // 使能 HSE RCC_HSEConfig(RCC_HSE_ON);HSEStatus = RCC_WaitForHSEStartUp();if( HSEStatus == SUCCESS ){// 使能預(yù)取指FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);FLASH_SetLatency(FLASH_Latency_2);RCC_HCLKConfig(RCC_SYSCLK_Div1);RCC_PCLK1Config(RCC_HCLK_Div2);RCC_PCLK2Config(RCC_HCLK_Div1);// 配置 PLLCLK = HSE * RCC_PLLMul_xRCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_x);// 使能PLLRCC_PLLCmd(ENABLE);// 等待PLL穩(wěn)定while( RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET );// 選擇系統(tǒng)時(shí)鐘RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);while( RCC_GetSYSCLKSource() != 0x08 );}else{/* 如果HSE 啟動(dòng)失敗,用戶可以在這里添加處理錯(cuò)誤的代碼 */} }void HSI_SetSysClk( uint32_t RCC_PLLMul_x ) {__IO uint32_t HSIStatus = 0;// 把RCC 寄存器復(fù)位成復(fù)位值RCC_DeInit(); // 使能 HSI RCC_HSICmd(ENABLE);HSIStatus = RCC->CR & RCC_CR_HSIRDY;if( HSIStatus == RCC_CR_HSIRDY ){// 使能預(yù)取指FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);FLASH_SetLatency(FLASH_Latency_2);RCC_HCLKConfig(RCC_SYSCLK_Div1);RCC_PCLK1Config(RCC_HCLK_Div2);RCC_PCLK2Config(RCC_HCLK_Div1);// 配置 PLLCLK = HSE * RCC_PLLMul_xRCC_PLLConfig(RCC_PLLSource_HSI_Div2, RCC_PLLMul_x);// 使能PLLRCC_PLLCmd(ENABLE);// 等待PLL穩(wěn)定while( RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET );// 選擇系統(tǒng)時(shí)鐘RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);while( RCC_GetSYSCLKSource() != 0x08 );}else{/* 如果HSI 啟動(dòng)失敗,用戶可以在這里添加處理錯(cuò)誤的代碼 */} }void MCO_GPIO_Config(void) {GPIO_InitTypeDef GPIO_InitStructure;// 開啟GPIOA的時(shí)鐘RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);// 選擇GPIO8引腳GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;//設(shè)置為復(fù)用功能推挽輸出GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;//設(shè)置IO的翻轉(zhuǎn)速率為50MGPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;// 初始化GPIOA8GPIO_Init(GPIOA, &GPIO_InitStructure);} #ifndef __BSP_RCCCLKCONFIG_H #define __BSP_RCCCLKCONFIG_H#include "stm32f10x.h"void HSE_SetSysClk( uint32_t RCC_PLLMul_x ); void MCO_GPIO_Config(void); void HSI_SetSysClk( uint32_t RCC_PLLMul_x ); #endif /*__BSP_RCCCLKCONFIG_H */ #include "stm32f10x_it.h" #include "bsp_usart.h" #include "bsp_led.h"// 串口中斷服務(wù)函數(shù) void DEBUG_USART_IRQHandler(void) {uint8_t ucTemp;if(USART_GetITStatus(DEBUG_USARTx,USART_IT_RXNE)!=RESET){ ucTemp = USART_ReceiveData(DEBUG_USARTx);//只能使用中斷作為輸入,不能使用ch = getchar(),藍(lán)牙串口手機(jī)軟件不支持。switch(ucTemp){case '1': LED1(ON);break;case '2': LED1(OFF);break;default: LED1(ON);break;} USART_SendData(DEBUG_USARTx,ucTemp); } }

?

6. 藍(lán)牙其它知識(shí)

6.1產(chǎn)品特性:


1、核心模塊使用HC-05從模塊,引出接口包括VCC,GND,TXD,RXD,EN引腳、藍(lán)牙連接狀態(tài)引出腳(STATE),未連接輸出低,連接后輸出高(應(yīng)該是指通信后輸出高)
2、led指示藍(lán)牙連接狀態(tài),
快閃表示沒有藍(lán)牙連接,慢閃表示進(jìn)入AT模式,雙閃表示藍(lán)牙已連接并打開了端口
3、底板設(shè)置防反接二極管,帶3.3V LDO,
輸入電壓3.6~6V,未配對(duì)時(shí)電流約30mA,配對(duì)后約10mA,輸入電壓禁止超過7V!
4、接口電平3.3V,可以直接連接各種單片機(jī)(51,AVR,PIC,ARM,MSP430等),5V單片機(jī)也可直接連接,無需MAX232也不能經(jīng)過MAX232!
5、空曠地有效距離10米(功率等級(jí)為CLASS 2),超過10米也是可能的,但不對(duì)此距離的連接質(zhì)量做保證
6、配對(duì)以后當(dāng)
全雙工串口使用,無需了解任何藍(lán)牙協(xié)議,支持8位數(shù)據(jù)位、1位停止位、可設(shè)置奇偶校驗(yàn)的通信格式,這也是最常用的通信格式,不支持其他格式。
7、可以通過拉高34腳進(jìn)入AT命令模式設(shè)置參數(shù)和查詢信息
8、體積小巧(3.57cm*1.52cm),工廠貼片生產(chǎn),保證貼片質(zhì)量。并套透明熱縮管,防塵美觀,且有一定的防靜電能力。
9、可通過AT命令切換為主機(jī)或者從機(jī)模式,可通過AT命令連接指定設(shè)備
10、支持從4800bps~1382400bps間的標(biāo)準(zhǔn)波特率

6.2 藍(lán)牙三種角色:

AT+ROLE:該指令用于選擇HC05藍(lán)牙模塊的角色,總共有三種角色:master,slave,loop-slave.

AT+ROLE=0\r\n ?將藍(lán)牙模塊設(shè)置成從角色,只能被動(dòng)連接

AT+ROLE=1\r\n ?將藍(lán)牙模塊設(shè)置成主角色,可以查詢周圍SPP藍(lán)牙從設(shè)備,并發(fā)送連接

AT+ROLE=2\r\n ?將藍(lán)牙模塊設(shè)置成回環(huán)角色,被動(dòng)連接,接收遠(yuǎn)程藍(lán)牙模塊主設(shè)備數(shù)據(jù)并將數(shù)據(jù)原樣返回給遠(yuǎn)程藍(lán)牙設(shè)備

這幾個(gè)指令用在不同的場(chǎng)合,當(dāng)設(shè)置藍(lán)牙模塊為從設(shè)備的時(shí)候,可以用手機(jī)的相關(guān)藍(lán)牙裝串口軟件連接該設(shè)備,進(jìn)行通訊;當(dāng)設(shè)置成主角色的時(shí)候,可以搜索周遭的藍(lán)牙從設(shè)備,并連接,這種模式在應(yīng)用中很常用;回環(huán)角色很多時(shí)候都是用來做測(cè)試用的。

設(shè)置為主模塊的步驟:
1、PIO11 置高。
2、上電,模塊進(jìn)入AT 命令響應(yīng)狀態(tài)。
3、超級(jí)終端或其他串口工具,設(shè)置波特率38400,數(shù)據(jù)位8 位,停止位1 位,無校驗(yàn)位,無流控制。
4、串口發(fā)送字符“AT+ROLE=1\r\n”,成功返回“OK\r\n”,其中\(zhòng)r\n 為回車換行。
5、PIO 置低,重新上電,模塊為主模塊,自動(dòng)搜索從模塊,建立連接。
?

6.3?藍(lán)牙測(cè)試軟件

USB-TTL連接藍(lán)牙模塊HC-05后,可一鍵獲取和設(shè)置模塊信息

? ? ?

?

總結(jié)

以上是生活随笔為你收集整理的蓝牙模块HC05的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 澳门三级 | 97超级碰碰人妻中文字幕 | h视频在线看 | 欧美在线中文字幕 | 欧美成人一区二区三区片免费 | 亚洲综合大片69999 | 国产精品天天狠天天看 | av污 | 欧美老熟 | 国产成人免费av一区二区午夜 | 91桃色在线 | 国产精品无码久久久久一区二区 | 超碰在线观看99 | 每日更新av | 精品久久久久久久久中文字幕 | 激情五月开心婷婷 | 亚洲中文字幕一区 | 狠狠v欧美v日韩v亚洲ⅴ | 亚洲高清久久 | 亚洲再线 | 91丨porny丨尤物| 一区二区三区四区影院 | 国产网站大全 | 久久在线中文字幕 | 欧美另类tv | 色偷偷网站 | 亚洲短视频 | 日韩欧美高清视频 | asian日本肉体pics| 欧美成人手机视频 | 亚洲成人欧美 | 在线中文字幕视频 | jizz性欧美15 | 大地资源二中文在线影视观看 | 99亚洲视频 | 黄色录像a级片 | 黄三级 | 日本少妇裸体做爰高潮片 | 亚洲一区二区偷拍 | 久久99精品波多结衣一区 | 国产精品国产三级国产专播精品人 | 中国美女黄色一级片 | 女同av在线 | 成人免费在线电影 | 欧美日韩91| 国产精品影院在线观看 | 超碰人人干人人 | 寡妇高潮一级视频免费看 | 色就是色亚洲色图 | 麻豆91网站| 亚洲av中文无码乱人伦在线观看 | 黄色网一级片 | www三级免费 | 日韩午夜剧场 | 操操操干干干 | 国产精品无码成人网站视频 | 91国产免费视频 | 草莓视频在线观看18 | 国产一级片免费看 | 国产欧美精品一区二区在线播放 | 动漫裸体无遮挡 | 色人人 | 国产精品av网站 | 丰满人妻一区二区三区四区53 | 国产情侣一区 | 亚洲人成7777| 中文字幕精品视频在线观看 | 潮喷失禁大喷水aⅴ无码 | 国产拍拍视频 | 亚洲私拍 | 日韩黄页网站 | 国产精品三区在线观看 | 免费av一级 | 日韩欧美一级视频 | 亚洲综合精品国产一区二区三区 | 91久久中文字幕 | 木下凛凛子av一区二区三区 | 国产午夜免费 | 欧美性生活一区二区三区 | 麻豆视频在线观看 | 影音先锋激情在线 | 中出在线观看 | 精品无码国产污污污免费网站 | 91麻豆精品一二三区在线 | 最新黄色av网址 | 秋霞一级视频 | 亚洲国产日韩欧美一区二区三区 | 亚洲国产一区视频 | 欧美视频a| 激情中文字幕 | 男人猛进女人爽的大叫 | 一区二区在线观看免费 | 91成人精品国产刺激国语对白 | 强行挺进白丝老师里呻吟 | 三级不卡视频 | www裸玉足久久久 | 欧美性猛交xxxx偷拍洗澡 | 日本h视频在线观看 | 亚洲激情免费 |