色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

第五章-V1.5 HC05藍(lán)牙模塊使用 STM32串口接受中斷 HC05藍(lán)牙模塊連手機(jī)

STM32智能小車V1.5 ? 來(lái)源:dfhjgfg ? 作者:dfhjgfg ? 2024-08-15 16:22 ? 次閱讀

功能介紹放開(kāi)頭, 使用便捷無(wú)需愁。

這是全網(wǎng)最詳細(xì)、性價(jià)比最高的STM32實(shí)戰(zhàn)項(xiàng)目入門(mén)教程,通過(guò)合理的硬件設(shè)計(jì)和詳細(xì)的視頻筆記介紹,硬件使用STM32F103主控資料多方便學(xué)習(xí),通過(guò)3萬(wàn)字筆記、12多個(gè)小時(shí)視頻、20多章節(jié)代碼手把手教會(huì)你如何開(kāi)發(fā)和調(diào)試。讓你更快掌握嵌入式系統(tǒng)開(kāi)發(fā)。

V1.5.0-STM32智能小車

V1.5.0:庫(kù)函數(shù)開(kāi)發(fā)。功能:循跡、避障、跟隨、遙控、電池電壓顯示等。

視頻合集鏈接推薦觀看

[https://www.bilibili.com/video/BV1SY411L7rJ/?spm_id_from=333.337.search-card.all.click]

**V3.3.0-STM32智能小車 **

V3:HAL庫(kù)開(kāi)發(fā)、功能:PID速度控制、PID循跡、PID跟隨、遙控、避障、PID角度控制、視覺(jué)控制、電磁循跡、RTOS等功能。

視頻合集鏈接推薦觀看

[https://www.bilibili.com/video/BV16x4y1M7EN/?spm_id_from=333.337.search-card.all.click]

串口接收發(fā)送

STM32串口初始化

這里先初始化使用串口1

//串口1中斷服務(wù)程序
//注意,讀取USARTx- >SR能避免莫名其妙的錯(cuò)誤
u8 USART_RX_BUF[USART_REC_LEN]; //接收緩沖,最大USART_REC_LEN個(gè)字節(jié).
//接收狀態(tài)
//bit15, 接收完成標(biāo)志
//bit14, 接收到0x0d
//bit13~0, 接收到的有效字節(jié)數(shù)目
u16 USART_RX_STA=0; //接收狀態(tài)標(biāo)記
void uart_init(u32 bound){
//GPIO端口設(shè)置
GPIO_InitTypeDef GPIO_InitStructure;
USART_InitTypeDef USART_InitStructure;
NVIC_InitTypeDef NVIC_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1|RCC_APB2Periph_GPIOA, ENABLE);
//使能USART1,GPIOA時(shí)鐘
//USART1_TX GPIOA.9
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; //PA.9
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //復(fù)用推挽輸出
GPIO_Init(GPIOA, &GPIO_InitStructure);//初始化GPIOA.9
//USART1_RX GPIOA.10初始化
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;//PA10
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;//浮空輸入
GPIO_Init(GPIOA, &GPIO_InitStructure);//初始化GPIOA.10
//Usart1 NVIC 配置
NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=3 ;//搶占優(yōu)先級(jí)3
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3; //子優(yōu)先級(jí)3
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //IRQ通道使能
NVIC_Init(&NVIC_InitStructure); //根據(jù)指定的參數(shù)初始化VIC寄存器
//USART 初始化設(shè)置
USART_InitStructure.USART_BaudRate = bound;//串口波特率
USART_InitStructure.USART_WordLength = USART_WordLength_8b;//字長(zhǎng)為8位數(shù)據(jù)格式
USART_InitStructure.USART_StopBits = USART_StopBits_1;//一個(gè)停止位
USART_InitStructure.USART_Parity = USART_Parity_No;//無(wú)奇偶校驗(yàn)位
USART_InitStructure.USART_HardwareFlowControl =
USART_HardwareFlowControl_None;//無(wú)硬件數(shù)據(jù)流控制
USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx; //收發(fā)模式
USART_Init(USART1, &USART_InitStructure); //初始化串口1
USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);//開(kāi)啟串口接受中斷
USART_Cmd(USART1, ENABLE); //使能串口1
}

在main中定義標(biāo)志位

int g_USART1_FLAG1 = 0; //串口控制標(biāo)志位

在usart.h中聲明變量

extern int g_USART1_FLAG1 ;

在中斷服務(wù)函數(shù)添加處理

void USART1_IRQHandler(void) //串口1中斷服務(wù)程序
{
u8 Res;
#if SYSTEM_SUPPORT_OS //如果SYSTEM_SUPPORT_OS為真,則需要支持OS.
OSIntEnter();
#endif
if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET) //接收中斷(接收到的數(shù)據(jù)必
須是0x0d 0x0a結(jié)尾)
{
Res =USART_ReceiveData(USART1); //讀取接收到的數(shù)據(jù)
if(Res == 'A') g_USART1_FLAG1 = 1 ; //根據(jù)接受的數(shù)據(jù) 置為標(biāo)志位
if(Res == 'B')g_USART1_FLAG1 = 2 ;
if((USART_RX_STA&0x8000)==0)//接收未完成
{
if(USART_RX_STA&0x4000)//接收到了0x0d
{
if(Res!=0x0a)USART_RX_STA=0;//接收錯(cuò)誤,重新開(kāi)始
else USART_RX_STA|=0x8000; //接收完成了
}
else //還沒(méi)收到0X0D
{
if(Res==0x0d)USART_RX_STA|=0x4000;
else
{
USART_RX_BUF[USART_RX_STA&0X3FFF]=Res ;
USART_RX_STA++;
if(USART_RX_STA >(USART_REC_LEN-1))USART_RX_STA=0;//接收數(shù)據(jù)錯(cuò)
誤,重新開(kāi)始接收
}
}
}
}
#if SYSTEM_SUPPORT_OS //如果SYSTEM_SUPPORT_OS為真,則需要支持OS.
OSIntExit();
#endif
}

調(diào)用初始化函數(shù)

uart_init(115200); //串口初始化為115200

在main.c 的邏輯

while(1)
{
//串口
if(g_USART1_FLAG1 == 1){
LED =! LED;
}
if(g_USART3_FLAG1 == 2) {
LED =! LED;
}
}
?

測(cè)試單片機(jī)串口

TTL與單片機(jī)連接
在這里插入圖片描述
TTL插入電腦,使用串口助手->選擇端口->更改波特率115200->發(fā)送數(shù)據(jù)
在這里插入圖片描述
現(xiàn)象 發(fā)送A 或B 可以使小燈反轉(zhuǎn)、發(fā)送其他命令無(wú)現(xiàn)象。

配置藍(lán)牙

更改藍(lán)牙波特率
見(jiàn)硬件藍(lán)牙介紹
我們?cè)贏T模式下設(shè)置發(fā)送AT指令:AT+UART=115200,0,0
在這里插入圖片描述

測(cè)試藍(lán)牙

斷電重啟藍(lán)牙,更改軟件波特率為115200,打開(kāi)手機(jī)藍(lán)牙與HC-05配對(duì) (密碼:1234)
使用藍(lán)牙調(diào)試器(應(yīng)用商店下載即可),發(fā)送aa 觀察電腦串口軟件
在這里插入圖片描述
手機(jī)APP-藍(lán)牙調(diào)試器的設(shè)置方法
調(diào)試成功 :藍(lán)牙軟件和串口軟件能夠通訊
在這里插入圖片描述

練一練--藍(lán)牙控制小燈

連接如圖
在這里插入圖片描述
通過(guò)發(fā)送A或者B 控制單片機(jī)小燈反轉(zhuǎn)
那么上面我們就完成了藍(lán)牙的基本控制
然后我們就可以藍(lán)牙反轉(zhuǎn)燈的時(shí)候控制小車前行停止

//串口
if(g_USART1_FLAG1 == 1){
g_USART1_FLAG1 = 0;
//左電機(jī)慢速正轉(zhuǎn)
AIN1=0;
AIN2=1;
TIM_SetCompare4(TIM1,1700); //設(shè)置
//右邊電機(jī)慢速執(zhí)行
BIN1 =1;
BIN2 =0;
TIM_SetCompare1(TIM1,1700);
LED =! LED;
}
if(g_USART1_FLAG1 == 2) {
g_USART1_FLAG1 = 0;
//雙電機(jī)停止
BIN1 = 0;
BIN2 = 0;
AIN1 = 0;
AIN2 =0;
LED =! LED;
}
?

上面是通過(guò)串口一(PA9 PA10)
藍(lán)牙硬件是串口三(PB10 PB11)下面我們通過(guò)串口三實(shí)現(xiàn)
初始化使用串口3

//初始化串口3
void uart_init_3(u32 bound){
//GPIO端口設(shè)置
GPIO_InitTypeDef GPIO_InitStructure;
USART_InitTypeDef USART_InitStructure;
NVIC_InitTypeDef NVIC_InitStructure;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART3, ENABLE); //使能USART3
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE); //,GPIOB時(shí)鐘
//USART3_TX GPIOB.10
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10; //PB.10
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //復(fù)用推挽輸出
GPIO_Init(GPIOB, &GPIO_InitStructure);//初始化GPIOB.10
//USART3_RX GPIOB.11初始化
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11;//PB11
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;//浮空輸入
GPIO_Init(GPIOB, &GPIO_InitStructure);//初始化GPIOB.11
//Usart3 NVIC 配置
NVIC_InitStructure.NVIC_IRQChannel = USART3_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=3 ;//搶占優(yōu)先級(jí)3
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3; //子優(yōu)先級(jí)3
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //IRQ通道使能
NVIC_Init(&NVIC_InitStructure); //根據(jù)指定的參數(shù)初始化VIC寄存器
//USART 初始化設(shè)置
USART_InitStructure.USART_BaudRate = bound;//串口波特率
USART_InitStructure.USART_WordLength = USART_WordLength_8b;//字長(zhǎng)為8位數(shù)據(jù)格式
USART_InitStructure.USART_StopBits = USART_StopBits_1;//一個(gè)停止位
USART_InitStructure.USART_Parity = USART_Parity_No;//無(wú)奇偶校驗(yàn)位
USART_InitStructure.USART_HardwareFlowControl =
USART_HardwareFlowControl_None;//無(wú)硬件數(shù)據(jù)流控制
USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx; //收發(fā)模式
USART_Init(USART3, &USART_InitStructure); //初始化串口3
USART_ITConfig(USART3, USART_IT_RXNE, ENABLE);//開(kāi)啟串口接受中斷
USART_Cmd(USART3, ENABLE); //使能串口3
}

在main中定義標(biāo)志位

int g_USART3_FLAG1 = 0; //串口3控制標(biāo)志位

在usart.h中聲明變量

extern int g_USART3_FLAG1 ;

在中斷服務(wù)函數(shù)添加處理

//串口3 中斷處理函數(shù)
void USART3_IRQHandler (void)
{
u8 Res;
if(USART_GetITStatus(USART3, USART_IT_RXNE) != RESET)
{
Res =USART_ReceiveData(USART3); //讀取接收到的數(shù)據(jù)
if(Res == 'A') g_USART3_FLAG1 = 1 ; //根據(jù)接受的數(shù)據(jù) 置為標(biāo)志位
if(Res == 'B')g_USART3_FLAG1 = 2 ;
}
}

調(diào)用初始化函數(shù)

uart_init_3(115200); //初始化串口3

在main.c 編寫(xiě)邏輯

while(1)
{
//串口
if(g_USART3_FLAG1 == 1){
g_USART3_FLAG1 = 0;
//左電機(jī)慢速正轉(zhuǎn)
AIN1=0;
AIN2=1;
TIM_SetCompare4(TIM1,1700); //設(shè)置
//右邊電機(jī)慢速執(zhí)行
BIN1 =1;
BIN2 =0;
TIM_SetCompare1(TIM1,1700);
LED =! LED;
}
if(g_USART3_FLAG1 == 2) {
g_USART3_FLAG1 = 0;
//雙電機(jī)停止
BIN1 = 0;
BIN2 = 0;
AIN1 = 0;
AIN2 =0;
LED =! LED;
}
}

把藍(lán)牙安裝順序連接到STM32
跳線帽改至藍(lán)牙
在這里插入圖片描述
手機(jī)連接藍(lán)牙 使用藍(lán)牙調(diào)試器發(fā)送 A 或者 B
現(xiàn)象:發(fā)送A 小車直行、發(fā)送B小車停止。

練一練--藍(lán)牙控制小車運(yùn)動(dòng)

USART中斷服務(wù)函數(shù)

//串口3 中斷處理函數(shù)
void USART3_IRQHandler (void)
{
u8 Res;
if(USART_GetITStatus(USART3, USART_IT_RXNE) != RESET)
{
Res =USART_ReceiveData(USART3); //讀取接收到的數(shù)據(jù)
if(Res == 'A') g_USART3_FLAG1 = 1 ; //根據(jù)接受的數(shù)據(jù) 置為標(biāo)志位
if(Res == 'B')g_USART3_FLAG1 = 2 ;
if(Res == 'C') g_USART3_FLAG1 = 3 ; //根據(jù)接受的數(shù)據(jù) 置為標(biāo)志位
if(Res == 'D')g_USART3_FLAG1 = 4 ;
if(Res == 'E')g_USART3_FLAG1 = 5;
}
}

main 中的邏輯

while(1)
{
if(g_USART3_FLAG1 == 1) //前進(jìn)
{
g_USART3_FLAG1=0;
Forward();
delay_ms(500);
}
if(g_USART3_FLAG1 == 2) //向右
{
g_USART3_FLAG1=0;
Rightward();
delay_ms(500);
}
if(g_USART3_FLAG1 ==3) //向左
{
g_USART3_FLAG1=0;
Leftward();
delay_ms(500);
}
if(g_USART3_FLAG1 ==4) //向后
{
g_USART3_FLAG1=0;
Backward();
delay_ms(500);
}
if(g_USART3_FLAG1 ==5) //停止
{
g_USART3_FLAG1=0;
AIN1=0;
AIN2=0;
BIN1=0;
BIN2=0;
delay_ms(500);
}
}

手機(jī)中藍(lán)牙調(diào)試助手的設(shè)計(jì)
在這里插入圖片描述

練一練--把數(shù)據(jù)發(fā)送給電腦串口助手和手機(jī)APP

前面我們介紹了,如何通過(guò)電腦或者藍(lán)牙APP,向單片機(jī)發(fā)送數(shù)據(jù),下面我們介紹如何:?jiǎn)纹瑱C(jī)如何向
電腦和藍(lán)牙APP發(fā)送數(shù)據(jù)。
庫(kù)函數(shù)提供了相關(guān)串口函數(shù),但是每次只能發(fā)送一個(gè)字節(jié)

USART_SendData(USART1,'X');//通過(guò)庫(kù)函數(shù)發(fā)送字節(jié)數(shù)據(jù)
while(USART_GetFlagStatus(USART1,USART_FLAG_TC) == RESET);//判斷發(fā)送標(biāo)志位,是否發(fā)送
結(jié)束

在正點(diǎn)原子例程中完成了對(duì)printf的重映射,所以我們可以輕松的通過(guò)printf ()函數(shù)向串口1 發(fā)送不定長(zhǎng)
數(shù)據(jù),這是正點(diǎn)原子的例程

struct __FILE
{
int handle;
};
FILE __stdout;
//定義_sys_exit()以避免使用半主機(jī)模式
void _sys_exit(int x)
{
x = x;
}
//重定義fputc函數(shù)
int fputc(int ch, FILE *f)
{
while((USART1- >SR&0X40)==0);//循環(huán)發(fā)送,直到發(fā)送完畢 通過(guò)SR寄存器判斷是否發(fā)送完成
USART1- >DR = (u8) ch; //通過(guò)DR寄存器發(fā)送數(shù)據(jù)
return ch;
}

那么我們?nèi)绾螌?shí)現(xiàn)任意串口都可以任性發(fā)送那?
這里我們使用vsprintf 格式化字符串來(lái)完成
需要包含的頭文件

#include "stdarg.h"
void UsartPrintf(USART_TypeDef * USARTx,char * fmt ,...)
{
unsigned char UsartPrintfBuf[256]; //定義一個(gè)字符串?dāng)?shù)組
va_list ap;//初始化指向參數(shù)列表的指針
unsigned char *pStr = UsartPrintfBuf; //指針指向數(shù)組首地址
va_start(ap,fmt);//將第一個(gè)可變參數(shù)的地址付給ap,即ap 指向可變參數(shù)列表的開(kāi)始
vsprintf((char *)UsartPrintfBuf, fmt,ap);
//將參數(shù)fmt、ap 指向的可變參數(shù)一起轉(zhuǎn)化成格式化字符串,放string數(shù)組中,作用同sprintf
(),只是參數(shù)類型不同
va_end(ap); //清除指針
while(*pStr != 0) //判斷是否發(fā)送完字符串
{
//while(USART_GetFlagStatus(USART3,USART_FLAG_TC == RESET));//判斷發(fā)送標(biāo)志
位,是否發(fā)送結(jié)束
USART_SendData(USARTx,*pStr++);//通過(guò)庫(kù)函數(shù)發(fā)送字符串
//pStr ++;
while(USART_GetFlagStatus(USARTx,USART_FLAG_TC) == RESET);//判斷發(fā)送標(biāo)志
位,是否發(fā)送結(jié)束
}
}

參考資料
在main 中調(diào)用函數(shù)

UsartPrintf(USART3,"Distance:%dMode:%d",TCRT5000_Dist(),Mode);

在手機(jī)APP顯示數(shù)據(jù)
在這里插入圖片描述

審核編輯 黃宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • STM32
    +關(guān)注

    關(guān)注

    2270

    文章

    10921

    瀏覽量

    356979
  • 串口
    +關(guān)注

    關(guān)注

    14

    文章

    1557

    瀏覽量

    76822
  • HC05
    +關(guān)注

    關(guān)注

    2

    文章

    28

    瀏覽量

    26243
  • 藍(lán)牙模塊
    +關(guān)注

    關(guān)注

    30

    文章

    577

    瀏覽量

    55824
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    請(qǐng)問(wèn)安卓手機(jī)怎么與HC05藍(lán)牙模塊通信?

    最近公司的產(chǎn)品想使用手機(jī)藍(lán)牙STM32芯片通信,購(gòu)買了HC05藍(lán)牙模塊,用資料里面的
    發(fā)表于 05-08 23:02

    hc05藍(lán)牙模塊當(dāng)串口使用stm32

    hc05藍(lán)牙模塊當(dāng)串口使用stm32hc05藍(lán)牙.rar (2.59 MB )
    發(fā)表于 05-20 22:15

    藍(lán)牙HC05是什么

    stm 32 串口通信藍(lán)牙篇1. HC-05藍(lán)牙1.1藍(lán)牙模塊使用介紹
    發(fā)表于 08-11 09:29

    藍(lán)牙HC05是什么?hc05藍(lán)牙模塊如何使用

    藍(lán)牙HC05是主從一體的藍(lán)牙串口模塊,簡(jiǎn)單的說(shuō),當(dāng)藍(lán)牙設(shè)備與
    發(fā)表于 01-11 07:46

    stm32f407Zgt6與hc05藍(lán)牙模塊通信步驟

    stm32f407Zgt6 與 hc05藍(lán)牙模塊通信步驟stm32f407Zgt6串口配置
    發(fā)表于 03-02 07:08

    藍(lán)牙HC05資料

    藍(lán)牙HC05資料
    發(fā)表于 12-19 14:01 ?100次下載

    串口轉(zhuǎn)藍(lán)牙模塊HC05資料

    串口轉(zhuǎn)藍(lán)牙模塊HC05資料
    發(fā)表于 11-29 16:33 ?75次下載

    hc05hc06有什么不同_hc05hc06區(qū)別

    hc05hc06是兩種藍(lán)牙串口模塊,兩者經(jīng)常被拿來(lái)比較,他們之間有何區(qū)別呢?
    發(fā)表于 01-11 15:51 ?7.8w次閱讀
    <b class='flag-5'>hc05</b>和<b class='flag-5'>hc</b>06有什么不同_<b class='flag-5'>hc05</b>和<b class='flag-5'>hc</b>06區(qū)別

    hc05藍(lán)牙模塊如何使用_兩個(gè)hc05藍(lán)牙模塊配對(duì)

    藍(lán)牙HC05是主從一體的藍(lán)牙串口模塊,簡(jiǎn)單的說(shuō),當(dāng)藍(lán)牙設(shè)備與
    發(fā)表于 01-11 16:09 ?11.1w次閱讀

    HC05藍(lán)牙串口模塊的原理圖和源代碼配套軟件及實(shí)驗(yàn)說(shuō)明

    本文檔的主要內(nèi)容詳細(xì)介紹的是HC05藍(lán)牙串口模塊的原理圖和源代碼配套軟件及實(shí)驗(yàn)說(shuō)明包括了:ATK-HC05
    發(fā)表于 03-18 08:00 ?155次下載
    <b class='flag-5'>HC05</b><b class='flag-5'>藍(lán)牙</b><b class='flag-5'>串口</b><b class='flag-5'>模塊</b>的原理圖和源代碼配套軟件及實(shí)驗(yàn)說(shuō)明

    嵌入式單片機(jī)基礎(chǔ)篇(二十八)之藍(lán)牙模塊HC05與BT05 AT指令

    藍(lán)牙模塊HC05與BT05 AT指令1、HC05:2、BT05
    發(fā)表于 11-24 12:06 ?23次下載
    嵌入式單片機(jī)基礎(chǔ)篇(二十八)之<b class='flag-5'>藍(lán)牙</b><b class='flag-5'>模塊</b><b class='flag-5'>HC05</b>與BT<b class='flag-5'>05</b> AT指令

    HC05 藍(lán)牙模塊 連接 ESP32 經(jīng)典藍(lán)牙

    概述HC05是一款常用的經(jīng)典藍(lán)牙模塊,某寶有大量銷售,主從機(jī)一體,而ESP32的藍(lán)牙兼容經(jīng)典藍(lán)牙和低功耗
    發(fā)表于 11-24 12:36 ?65次下載
    <b class='flag-5'>HC05</b> <b class='flag-5'>藍(lán)牙</b><b class='flag-5'>模塊</b> 連接 ESP32 經(jīng)典<b class='flag-5'>藍(lán)牙</b>

    HC05STM32進(jìn)行串口通訊實(shí)現(xiàn)與手機(jī)APP的數(shù)據(jù)透?jìng)?/a>

    HC05STM32手機(jī)透?jìng)?.實(shí)驗(yàn)工具:正點(diǎn)原子的精英版STM32F103ZET6,通用BLE藍(lán)牙
    發(fā)表于 12-24 18:54 ?55次下載
    <b class='flag-5'>HC05</b>與<b class='flag-5'>STM32</b>進(jìn)行<b class='flag-5'>串口</b>通訊實(shí)現(xiàn)與<b class='flag-5'>手機(jī)</b>APP的數(shù)據(jù)透?jìng)? />    </a>
</div>                            <div   id=

    STM32 + HC05串口藍(lán)牙設(shè)計(jì)簡(jiǎn)易的藍(lán)牙音箱

    Android手機(jī)打開(kāi)APP,設(shè)置好參數(shù)之后,選擇音樂(lè)文件發(fā)送給藍(lán)牙音箱設(shè)備端,HC05藍(lán)牙收到數(shù)據(jù)之后,再傳遞給VS1053進(jìn)行播放。程序里采用環(huán)形緩沖區(qū),接收
    的頭像 發(fā)表于 02-28 13:59 ?8935次閱讀
    <b class='flag-5'>STM32</b> + <b class='flag-5'>HC05</b><b class='flag-5'>串口</b><b class='flag-5'>藍(lán)牙</b>設(shè)計(jì)簡(jiǎn)易的<b class='flag-5'>藍(lán)牙</b>音箱

    HC05藍(lán)牙模塊編程實(shí)例

    今天分享一個(gè)實(shí)踐項(xiàng)目——HC05藍(lán)牙模塊的編程。
    的頭像 發(fā)表于 05-26 16:01 ?3699次閱讀
    <b class='flag-5'>HC05</b><b class='flag-5'>藍(lán)牙</b><b class='flag-5'>模塊</b>編程實(shí)例
    主站蜘蛛池模板: 777福彩社区| 飘雪在线观看免费完整版| 接吻吃胸摸下面啪啪教程| 欧美残忍xxxx极端| 亚洲AV久久无码高潮喷水| 97午夜理论片影院在线播放| 国产精品视频成人| 欧美中文字幕一区二区三区| 亚洲中文字幕永久在线全国| 囯产免费久久久久久国产免费| 乱xxxjapanese黑人| 午夜福利小视频400| YELLOW高清视频免费观看| 精品国产乱码久久久久久免费| 色即是空之甜性涩爱| A级韩国乱理伦片在线观看| 久久九九少妇免费看A片| 亚洲XXX午休国产熟女屁| 城中村快餐嫖老妇对白| 欧美 亚洲 中文字幕 高清| 在线视频 中文字幕| 精品无码国产自产在线观看 | 肉伦禁忌小说np| 97在线超碰免费视频| 久久电影午夜| 夜色私人影院永久入口| 好紧好湿太硬了我太爽了小说| 无码人妻99久久密AV| 成人免费网址在线| 欧美日韩在线亚洲一| 最新中文字幕在线视频| 久久全国免费久久青青小草| 国产午夜高潮熟女精品AV| 亚洲高清视频一区| 嫩草电影网嫩草影院| 香蕉59tv视频| 精品国产午夜肉伦伦影院| 日本熟妇乱妇熟色A片蜜桃| 把英语老师强奷到舒服动态图 | 神马伦理不卡午夜电影| 成在线人免费|