本章将会详细讲述蓝牙模块(HC-05)和STM32单片机之间的通信收发的数据如何处理,在测试开始前首先在手机上下载好一个蓝牙调试APP,此APP可以是手机端和PC端口的,以我常用的手机端的为例。
在配置工程之前先了解一下他的数据传输格式
一帧数据里面有以下数据:包头、原数据、校验位、包尾。
接下来我们在APP里面设置一个简单的工程以便我们验证后续的程序。
APP设置操作到处就结束了,可以用USB转串口先看一下HC-O5收到的数据,可以看见接收到的16进制数,一共是七个字节,帧头一位、原始数据四位、校验位一位、帧尾一位。
接下来是把我们提前准备好的硬件STM32单片机和HC-05模块连接上,在此直接贴图片,其他涉及到的知识不多赘述,不知道怎么接线的请移步百度。
如何配置串口初始化函数这里也不多说,紧接着开始写接收函数。
void UART4_IRQHandler(void) //串口4中断程序
{
static u8 res;
if(USART_GetITStatus(UART4, USART_IT_RXNE) != RESET)//接收到数据
{
res =USART_ReceiveData(UART4);
UART4_Flow_Receive_Prepare(res);
}
}
void UART4_Flow_Receive_Prepare(u8 data)
{
/* 局部静态变量:接收缓存 */
static u8 RxBuffer[UART4_RECV_LEN];
/* 数据长度 *//* 数据数组下标 */
static u16 _data_cnt = 0;
/* 接收状态 */
static u8 state = 0;
/* 帧头1 */
if(state==0&&data==0xA5)
{
// state=1;
state=2;
_data_cnt = 0;
RxBuffer[_data_cnt++]=data;
}
/* 接收数据组 */
else if(state==2)
{
RxBuffer[_data_cnt++]=data;
if((_data_cnt>=6||data==0x5A)&&_data_cnt>=1)
{
state=0;
UART4_access_Data(RxBuffer,_data_cnt);
}
}
/* 若有错误重新等待接收帧头 */
else
state = 0;
}
void UART4_access_Data(u8 data[],u16 i)
{
u16 j=0;
for(j=0;j<i;j++)
{
UART4_BT_date[j]=(u8)data[j];
// printf("Received data:%d \n\r",UART4_BT_date[2]);
}
UART4_RX_STA=1;
UART4_RX_deal();
}
u8 UART4_RX_deal(void)
{
if(UART4_RX_STA)
{
UART4_RX_STA =0;
}
}
再将收到的数据通过上位机调试助手打印出来
void task2_task(void *pvParameters)
{
while(1)
{
DC12V_WS_EN=1;//开启12V电压
ll=UART4_BT_date[1];
lp=UART4_BT_date[2];
lr=UART4_BT_date[3];
lv=UART4_BT_date[4];
if(ll==1)
{
printf("Received data:%d \n\r",UART4_BT_date[1]);
// Auxiliary_PWM_cleaning(5000);
}
if(lr==2)
{
printf("Received data:%d \n\r",UART4_BT_date[3]);
// Auxiliary_PWM_cleaning(-7000);
}
if(lp==6)
{
printf("Received data:%d \n\r",UART4_BT_date[2]);
// Auxiliary_PWM_dust_collection(5000);
}
if(lv==7)
{
printf("Received data:%d \n\r",UART4_BT_date[4]);
Auxiliary_PWM_dust_collection(-7000);
}
if (ll==0&&lr==0)
{
Auxiliary_PWM_cleaning(0);
}
if (lp==0&&lv==0)
{
Auxiliary_PWM_dust_collection(0);
}
vTaskDelay(5);
}
}
到这里基本上就处理完接收到的数据了,下期将会介绍如何把数据发回手机APP查看,讲得不对的地方麻烦各位大佬评论区指出。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)