欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 房产 > 建筑 > LVGL+FreeRTOS实战项目:智能健康助手(蓝牙模块篇)

LVGL+FreeRTOS实战项目:智能健康助手(蓝牙模块篇)

2025/2/3 1:22:38 来源:https://blog.csdn.net/m0_74676415/article/details/145194259  浏览:    关键词:LVGL+FreeRTOS实战项目:智能健康助手(蓝牙模块篇)

HC-05 蓝牙模块简介

  • 功能:支持串口通信的蓝牙模块,广泛应用于无线数据传输。支持 AT 指令配置。

  • 接口:UART 通信,默认波特率为 9600bps。

  • 应用:无线调试、数据传输、无线控制等。

硬件连接

HC-05 引脚功能STM32 连接
VCC电源输入 (+3.3V 或 +5V)3.3V
GNDGND
TXD蓝牙发送端PA3 (STM32 RX)
RXD蓝牙接收端PA2 (STM32 TX)

软件部分 

使用 STM32 的串口外设(USART)与 HC-05 进行通信,STM32 的 TX 引脚连接 HC-05 的 RXD,STM32 的 RX 引脚连接 HC-05 的 TXD,我们可以利用蓝牙进行后续模块的扩展以及利用串口进行打印调试。

蓝牙模块初始化(串口初始化) 

void Blue_Hc05_Init(void)
{GPIO_InitTypeDef GPIO_InitStructure;USART_InitTypeDef USART_InitStructure;NVIC_InitTypeDef NVIC_InitStructure;RCC_APB1PeriphClockCmd(BLUE_USART_RX_GPIO_CLK|BLUE_USART_TX_GPIO_CLK, ENABLE);RCC_APB1PeriphClockCmd(BLUE_USART_CLK, ENABLE);/* 连接 PXx 到 USARTx_Tx*/GPIO_PinAFConfig(BLUE_USART_RX_GPIO_PORT,BLUE_USART_RX_SOURCE, BLUE_USART_RX_AF);/*  连接 PXx 到 USARTx__Rx*/GPIO_PinAFConfig(BLUE_USART_TX_GPIO_PORT,BLUE_USART_TX_SOURCE, BLUE_USART_TX_AF);/* 配置Tx引脚为复用功能  */GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;GPIO_InitStructure.GPIO_Pin = BLUE_USART_TX_PIN  ;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(BLUE_USART_TX_GPIO_PORT, &GPIO_InitStructure);/* 配置Rx引脚为复用功能 */GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;GPIO_InitStructure.GPIO_Pin = BLUE_USART_RX_PIN;GPIO_Init(BLUE_USART_RX_GPIO_PORT, &GPIO_InitStructure);//USART 初始化设置USART_InitStructure.USART_BaudRate = BLUE_USART_BAUDRATE;//一般设置为9600;USART_InitStructure.USART_WordLength = USART_WordLength_8b;USART_InitStructure.USART_StopBits = USART_StopBits_1;USART_InitStructure.USART_Parity = USART_Parity_No;USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;USART_Init(BLUE_USART, &USART_InitStructure);/* Configure one bit for preemption priority *///NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);/* 配置中断源 */NVIC_InitStructure.NVIC_IRQChannel = BLUE_USART_IRQ;NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 4;NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;NVIC_Init(&NVIC_InitStructure);USART_ITConfig(BLUE_USART, USART_IT_RXNE, ENABLE);//开启中断USART_Cmd(BLUE_USART, ENABLE);                    //使能串口 //USART_Cmd(BLUE_USART, DISABLE);                    //使能串口 
}

其实就是初始化串口的一套经典公式,我们之后可以利用串口发送数据给蓝牙,然后蓝牙模块会把接收到的串口数据发送给我们的蓝牙APP,可以在蓝牙App中看到对应信息,在开发的时候,可以利用这个在手机上面看到调试打印信息,帮助我们开发。

 蓝牙模块的发送以及控制蓝牙是否打开

我们把STM32串口发送的标准库函数封装进入我们的蓝牙函数里面,之后可以更方便我们的调用,使得我们的代码更加直观。

// 发送一个
void BLUE_USART_Send_Data(char data)
{USART_SendData(BLUE_USART,data);while(USART_GetFlagStatus(BLUE_USART,USART_FLAG_TC)==0);  // 除非发送完成  
}// 发送一串
void BLUE_USART_Send_String(char *String)
{u16 len,j;len=strlen(String);for(j=0;j<len;j++){BLUE_USART_Send_Data(*String++);}
}

我们决定蓝牙是否打开,就是使能或者失能对应的蓝牙串口。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com