700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 基于HC-05蓝牙模块的STM32无线控制智能系统硬件开发

基于HC-05蓝牙模块的STM32无线控制智能系统硬件开发

时间:2023-06-16 17:15:21

相关推荐

基于HC-05蓝牙模块的STM32无线控制智能系统硬件开发

本文主要面向刚开始接触嵌入式开发的小白,详细介绍如何搭建基于蓝牙的STM32无线控制硬件平台,蓝牙模块使用淘宝上的HC-05串口转蓝牙模块,开发板使用基于STM32F407的航发RH407。

实验器材:PC(有蓝牙的)、HC-05(串口转蓝牙模块)、开发板(有TTL串口就行)、XCOM2.0串口调试助手

步骤:

1:准备硬件模块及带针排线;

2:如下图所示连接HC-05与开发板;

连接时最少可连接GND、VCC、RXD、TXD四根线,两根用于传输数据,两根用于供电。STM32串口需为TTL串口,否则需要转换芯片才能连接RS232串口

3:编写串口控制代码;

void inituart(){GPIO_InitTypeDef GPIO_InitStructure;USART_InitTypeDef USART_InitStructure;NVIC_InitTypeDef NVIC_InitStructure;//使能时钟RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);RCC_APB1PeriphClockCmd(RCC_APB1Periph_UART4, ENABLE);//引脚复用GPIO_PinAFConfig(GPIOA, GPIO_PinSource0, GPIO_AF_UART4);GPIO_PinAFConfig(GPIOA, GPIO_PinSource1, GPIO_AF_UART4);//串口设置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 = GPIO_Pin_0;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOA, &GPIO_InitStructure);GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;GPIO_Init(GPIOA, &GPIO_InitStructure);//串口配置USART_InitStructure.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(UART4, &USART_InitStructure);USART_Cmd(UART4, ENABLE);//优先级配置NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); NVIC_InitStructure.NVIC_IRQChannel = UART4_IRQn;NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;NVIC_Init(&NVIC_InitStructure);//开启中断USART_ITConfig(UART4, USART_IT_RXNE, ENABLE);USART_ITConfig(UART4, USART_IT_IDLE, ENABLE);}

4:编写串口中断函数;

void UART4_IRQHandler( void ){uint8_t Clear=Clear;uint8_t rxchar;if( USART_GetITStatus(UART4, USART_IT_RXNE) != RESET ){rxbuffer[rxnumber++]=UART4->DR; rxchar=0x11+UART4->DR; USART_SendData(UART4, rxchar+0x11);}else if( USART_GetITStatus(UART4, USART_IT_IDLE) != RESET){Clear=UART4->SR;Clear=UART4->DR;rxstate=1;}}

其目的是将串口传输来的数据存入数据缓存区,并将数据+0X11后返回至PC;

5:打开PC上蓝牙设置,并给开发板供电同时,将蓝牙模块与电脑进行连接,初始密码1234,连接成功后打开XCOM2.0串口调试助手,设置波特率为9600,选择十六进制发送;

6:实验,使用XCOM2.0发送0X11后可观察到接受数据为0X22;

备注:蓝牙模块与STM32连接需可靠,否则可能导致数据传输不稳定;

此实验所使用开发板与市场上常见开发板功能基本一致,使用者需根据自身开发板对串口引脚定义进行修改

有需要开发所有相关代码的直接留言邮箱

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。