利用STM32配置一块蓝牙模块
1.蓝牙模块配置原理
一般我们的蓝牙是用低功耗蓝牙,这些蓝牙再调试的时候,需要我们用到串口利用AT指令与蓝牙模块通信。
一
,
串口2
给蓝牙发送AT指令
二
,蓝牙接收到AT指令之后完成指令要求之后,将返回指令(字符串)发回串口2(例如:“ok”)
三
,串口2收到数据之后产生
串口中断
,此时我们能够利用
串口1
将中断产生的数据打印到串口调试助手
串口2收发数据过程中串口2与蓝牙模块通信的波特率为9600.
硬件引脚连接
STM32引脚 | 蓝牙模块引脚 |
---|---|
USART2_RX | TX |
USART2_TX | RX |
5V | VCC |
GND | GND |
2.蓝牙模块具体操作
一,串口2的发送接收AT指令
市面上蓝牙模块各式各样,故不同蓝牙的AT指令集往往也有所不同,大家如果在淘宝上面购买的话,可以向商家索要使用说明书,我用的是zs040蓝牙模块,
ZS040部分指令集
AT+NAMEXXX=>名称设为XXX
AT+ROLE0 =>从机
AT+ROLE1 =>主机
AT+LADDR####=>地址设为####
AT+PIN@@@ =>密码设为@@@@
注意
:发送AT指令需要在后方加上
\r\n
二,串口2的中断配置
//函数功能:中断服务函数将接收数据保存
void USART2_IRQHandler(void)
{
u8 c;
if(USART2->SR & 1<<5)
{
c=USART2->DR;//清除sr标志位
if(USART2_RX_FLAG==0)
{
if(USART2_RX_CNT<USART2_RX_LEN)//判断次数是否小于200
{
USART2_RX_BUFF[USART2_RX_CNT]=c;//一次一次循环赋值
USART2_RX_CNT++;
TIM4->CR1|=1<<0;//使能定时器4
TIM4->CNT=0;
}
else
{
USART2_RX_FLAG=1;
}
}
}
}
三,打印接收数据到串口1
将输出重定向编写好,便可以通过printf函数打印接收数据
printf("USART2_RX_BUFF=%s\r\n",USART2_RX_BUFF);
版权声明:本文为hahayuihatano原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。