STM32学习笔记1:STM32ZET6配置蓝牙模块

  • Post author:
  • Post category:其他




利用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 版权协议,转载请附上原文出处链接和本声明。