admin管理员组文章数量:1573073
HC05与STM32与手机透传
1.实验工具:正点原子的精英版STM32F103ZET6,通用BLE蓝牙模块一个HC05(最便宜的蓝牙模块),手机,电脑
2.HC05调试:若HC05上面有小按键,则按住按键不松,然后给HC05上电,观察蓝牙模块指示灯每隔两秒慢闪,则进入AT配置模式,松开按键。(正常蓝牙直接上电时指示灯快闪为从机模式)
3.AT命令调试:本次不使用TTL转串口模块,将STM32开发板的PA9,PA10短接片拔掉,将HC05的TX,RX用杜邦线与STM32的RX,TX相连(记住必须TX接RX,RX接TX),进入AT配置模式后打开电脑端的串口助手,记住波特率一定要为38400,选择对应的端口连接。勾选串口助手下面的发送新行。发送AT指令,若发送AT,若有OK回应则已进入AT配置模式,且HC05模块工作正常。
4.STM32与HC05连线:由于STM32的USART1,与USART2被占用,并未留出相应管脚,建议用USART3。HC05与STM32F103ZET6的USART3串口相连,RX接PB10,TX接PB11,电源接5V(不要接3.3v,可能因电压过低而导致通讯失败)HC05的剩下两个管脚悬空不接。
5.手机蓝牙连接HC05:打开手机蓝牙,打开手机蓝牙调试助手APP(网上,应用商店都有自己下载)连接成功后HC05由快闪变成每隔两秒双闪。默认十进制发送数据,对于数字不会出现乱码,对于汉字会出现乱码现象。
6.STM32串口程序:在程序主函数中判断是否接受中断,然后调用串口接受函数接受信息,然后将接受到的信息赋值给u8类型变量,调用串口发送函数将接受到的信息发送给手机APP,可以根据接受到的数据控制STM32上的相应的设备。
相应代码如下:
#include “sys.h”
#include “usart3.h”
u8 USART3_RX_BUF[USART3_REC_LEN];
u16 USART3_RX_STA=0;
u8 res;
void usart3_init(u32 bound)
{
GPIO_InitTypeDef GPIO_InitStructure;
NVIC_InitTypeDef NVIC_InitStructurea;
USART_InitTypeDef USART_InitStruct;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART3,ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
USART_DeInit(USART3);
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_10;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOB,&GPIO_InitStructure); //PB10
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING;
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_11;
GPIO_Init(GPIOB,&GPIO_InitStructure);
NVIC_InitStructurea.NVIC_IRQChannel=USART3_IRQn;
NVIC_InitStructurea.NVIC_IRQChannelCmd=ENABLE;
NVIC_InitStructurea.NVIC_IRQChannelPreemptionPriority=2;
NVIC_InitStructurea.NVIC_IRQChannelSubPriority=2;
NVIC_Init(&NVIC_InitStructurea);
USART_InitStruct.USART_BaudRate=bound; USART_InitStruct.USART_HardwareFlowControl=USART_HardwareFlowControl_None;
USART_InitStruct.USART_Mode=USART_Mode_Rx|USART_Mode_Tx;
USART_InitStruct.USART_WordLength=USART_WordLength_8b;
USART_InitStruct.USART_Parity=USART_Parity_No;
USART_InitStruct.USART_StopBits=USART_StopBits_1;
USART_ITConfig(USART3, USART_IT_RXNE, ENABLE);
USART_Init(USART3,&USART_InitStruct);
USART_Cmd(USART3,ENABLE);
}
void USART3_IRQHandler()
{
if(USART_GetITStatus(USART3,USART_IT_RXNE)!=RESET)
{
res=USART_ReceiveData(USART3);
USART_SendData(USART3,res);
USART_SendData(USART1,res);
}
}
STM32去掉短接片位置图片:
版权声明:本文标题:HC05与STM32进行串口通讯实现与手机APP的数据透传 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/dongtai/1727734686a1127319.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论