完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
|
|
这是蓝牙的连接图片,个人不是很清楚HC06和HC05的区别,是这个例程不能适用吗?
|
|
|
|
自己debug看看吧,
|
|
|
|
HC06只要串口程序就够了
UART3_Send_Str("AT+VERSION"); //发送AT指令 // LED0=LED1=LED2=0; while(1) { KEY_Scan(0); key=keydown_data; if(USART3_RX_STA&0X8000) //接收到一次数据 { LCD_Fill(30,200,240,250,YELLOW); //清除显示 reclen=USART3_RX_STA&0X7FFF; //得到数据长度 USART3_RX_BUF[reclen]=0; //加入结束符 if(reclen==9||reclen==8) //??DS1?? { if(strcmp((const char*)USART3_RX_BUF,"+LED0 ON")==0)LED0=0; //点亮LED0 if(strcmp((const char*)USART3_RX_BUF,"+LED0 OFF")==0)LED0=1;//熄灭LED0 if(strcmp((const char*)USART3_RX_BUF,"+LED1 ON")==0)LED1=0; //点亮LED1 if(strcmp((const char*)USART3_RX_BUF,"+LED1 OFF")==0)LED1=1;//熄灭LED1 if(strcmp((const char*)USART3_RX_BUF,"+LED2 ON")==0)LED2=0; //点亮LED2 if(strcmp((const char*)USART3_RX_BUF,"+LED2 OFF")==0)LED2=1;//熄灭LED2 } LCD_ShowString(30,200,209,119,16,USART3_RX_BUF);//显示接收到的数据 printf("%srn",USART3_RX_BUF); USART3_RX_STA=0; } } HC06只是个从模块,只可以接收,没有连接时是AT模式,连接上就是透传模式 |
|
|
|
帮顶。。。。。。。
|
|
|
|
这是主函数里面的吗?还有就是硬件连接没有 特别的要求吗
|
|
|
|
是的,这个是main函数里的,HC06模块只用4根引脚VCC GND RXD TXD
|
|
|
|
获取AT 指令版本命令:AT+VERSION,写这句主要是检测一下模块是否正常,进入main函数发送AT指令,串口就会接收到蓝牙的版本号,如果确认正常了,这句都可以不写,都是用默认的就可以了
|
|
|
|
#include "led.h"
#include "delay.h" #include "sys.h" #include "usart.h" #include "lcd.h" #include "hc05.h" #include "usart2.h" #include "string.h" #include "key.h" int main(void) { u8 t; u8 key; u8 sendmask=0; u8 sendcnt=0; u8 sendbuf[20]; u8 reclen=0; delay_init(); //延时函数初始化 NVIC_Configuration(); //设置NVIC中断分组2:2位抢占优先级,2位响应优先级 uart_init(9600); //串口初始化为9600 USART2_Init(9600); LED_Init(); //初始化与LED连接的硬件接口 // LED0=LED1=LED2=0; while(1) { if(USART2_RX_STA&0X8000) //接收到一次数据 { LCD_Fill(30,200,240,250,YELLOW); //清除显示 reclen=USART2_RX_STA&0X7FFF; //得到数据长度 USART2_RX_BUF[reclen]=0; //加入结束符 if(reclen==9||reclen==8) //??DS1?? { if(strcmp((const char*)USART2_RX_BUF,"+LED0 ON")==0)LED0=0; //点亮LED0 if(strcmp((const char*)USART2_RX_BUF,"+LED0 OFF")==0)LED0=1;//熄灭LED0 if(strcmp((const char*)USART2_RX_BUF,"+LED1 ON")==0)LED1=0; //点亮LED1 if(strcmp((const char*)USART2_RX_BUF,"+LED1 OFF")==0)LED1=1;//熄灭LED1 } // LED0=0; //LED0输出低 // LED1=1;//LED1输出高 USART2_RX_STA=0; } } } 请问这个简单程序还有什么BUG吗,为什么就是控制不了灯啊。。我把灯直接点亮都不行,这个程序哪里配置不正确呢?我是小白,求教万分谢谢 |
|
|
|
成功了谢谢,问题出在我把串口引脚接错了。以前没用过STM32,以后要好好学习了
|
|
|
|
帮顶。。。。。。。
|
|
|
|
楼主 你这个历程其他都没改吗
|
|
|
|
只有小组成员才能发言,加入小组>>
136个成员聚集在这个小组
加入小组390浏览 1评论
516浏览 1评论
630浏览 1评论
用PSOC6 BLE当外围设备,两者传输数据时,psoc6概率性出现蓝牙挂死的原因?
519浏览 1评论
是否有办法通过CYW20835板的固件发送BLE HCI命令?
491浏览 1评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-1-11 16:57 , Processed in 0.809091 second(s), Total 100, Slave 83 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号