关于蓝牙模块的驱动

本文介绍了蓝牙模块的两种工作模式——调试模式和连接模式,以及如何通过按键扫描在两者间切换,包括AT固件指令的使用和单片机控制的示例代码。
摘要由CSDN通过智能技术生成

蓝牙模块在我看来,有两种模式,可以将它们视为调试模式以及连接模式。

        调试模式的特点是它的指示灯大约两秒会进行一次亮灭,使用的默认波特率为38400bps,在对蓝牙模块进行上电之前需要先把PIN11引脚置1,之后再上电,而在完成上电后,其模式会固定下来,除了重新上电并且改变PIN11引脚的电平状态,就只有使用AT+RESET\r\n命令进行修改了,其功能为修改或者查看蓝牙模块的配置,例如名称(AT+NAME?\r\n)、配对码(AT+PSWD\r\n)等,使用的是AT固件指令,还可以修改蓝牙模块的主从模式,当然了,一般情况下,我们会把它用作主模式,这样在进行互联时才不会产生什么问题;

        另一种模式为连接模式,在这种模式下,未与设备进行连接时,它的指示灯会连闪,进行连接后,它的指示灯则也会变成两秒一闪,此时双方可进行通信,而在这种模式下,蓝牙模块通信使用的默认波特率为9600bps,且要想进入这种模式,上电之前需要把PIN11管脚置零再进行上电,若指示灯连闪,代表着进入连接模式,找到对应的蓝牙名称并且输入正确的配对码就能完成互联了。

废话不多说了,上我使用按键扫描来实现蓝牙模块模式的切换的代码,现在市面上的蓝牙模块大部分会有一个按钮,用于PIN11管脚电平的改变,而我以下的代码是针对没有该按键,而是使用管脚接入到单片机进行模式改变的,可能会有所差异,但是稍微调整一下也是可以使用的。

if(key_scan())
        {
            if(debug_flag == 0)//第一次按键,进入蓝牙调试模式
            {
                vTaskSuspend(pxCreatedTask1);//挂起任务1防止其以任何方式影响到任务2
                heating_pattern_clect(HEAT_OFF);//防止打印头和电机在调试过程中处于运行状态进而过热
                stop_moter_end();
                debug_flag = 1;
                bluebooth_init(38400);
                PBout(9) = 1;//断电重启
                PBout(1) = 0;
                vTaskDelay(50);//延时50ms,防止单片机太快而蓝牙模块没感觉
                PBout(1) = 1;//启动
                printf("进入蓝牙调试模式\r\n");
                
            }
            else if(debug_flag == 1)//再进行按键,返回蓝牙连接模式
            {
                bluebooth_init(9600);
                PBout(9) = 0;//断电重启
                PBout(1) = 0;
                vTaskDelay(50);//延时50ms,防止单片机太快而蓝牙模块没感觉
                PBout(1) = 1;//启动
                printf("退出蓝牙调试模式\r\n");
                debug_flag = 0;
                vTaskResume(pxCreatedTask1);
            }
        }

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值