700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > STM32驱动HC05蓝牙串口通信模块

STM32驱动HC05蓝牙串口通信模块

时间:2023-04-06 07:00:19

相关推荐

STM32驱动HC05蓝牙串口通信模块

前言

时不可以苟遇,道不可以虚行。

今天分享一下最近学习的HC05蓝牙模块,通过用手机蓝牙控制STM32单片机进行点灯、传输数据、显示波形等基础操作。

一、介绍

HC05模块是一款高性能主从一体蓝牙串口模块,说白了,只是个蓝牙转串口的设备,你只要知道串口怎么编程使用,就可以了,实现了所谓的透明传输。

准备工作

STM32H750VBT6IDE:Keil5STM32CubeMXVOFA+ 串口调试

二、手机蓝牙控制 STM32 单片机

手机通过蓝牙,向STM32单片机发送消息,STM32接收到消息之后原封不动的返回给手机,也可以修改成,手机发送特定的消息,然后,STM32单片机做出相对应的动作。比如:点亮LED、发动电机、显示波形等等。

连接说明:

数据包格式:

三、STM32 控制程序

/* USER CODE BEGIN Includes */#include "stdio.h"#include "math.h"#include "stdarg.h"#define CONSOLEBUF_SIZE 256/* USER CODE END Includes */

/* USER CODE BEGIN PTD */static char Uart_buf[CONSOLEBUF_SIZE];void PrintfDebugUart(const char *fmt, ...){va_list args;va_start(args, fmt);int length = vsnprintf(Uart_buf, sizeof(Uart_buf) - 1, fmt, args);va_end(args);HAL_UART_Transmit(&huart1, (uint8_t *)&Uart_buf, length, 0xffff);}/* USER CODE END PTD */

/* USER CODE BEGIN PD */uint8_t RxBuffer[4];//接收数据包的变量uint8_t TxBuffer[4];//发送数据包的变量uint8_t wave[100] = {0}; /* USER CODE END PD */

/* USER CODE BEGIN 2 */PrintfDebugUart("wang_Test.\r\n");for(int i=0; i<100; i++){wave[i] = (sin(2 * 3.1415926 * i / 100) + 1) * 100 / 2;//虚拟数据}HAL_UART_Receive_IT(&huart1, RxBuffer, 4);//循环使能,不断接受/* USER CODE END 2 */

/* USER CODE BEGIN 4 */void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart) //中断服务函数{if(huart == &huart1){switch(RxBuffer[1]){case 1:{HAL_GPIO_WritePin(LED_GPIO_Port,LED_Pin,GPIO_PIN_RESET);PrintfDebugUart("LED IS OFF.\r\n");}break;case 2:{HAL_GPIO_WritePin(LED_GPIO_Port,LED_Pin,GPIO_PIN_SET);for(uint16_t i=0; i<100; i++){TxBuffer[0] = 0xA5;TxBuffer[1] = wave[i];TxBuffer[2] = TxBuffer[1];TxBuffer[3] = 0x5A;HAL_UART_Transmit(&huart1,TxBuffer,4,0xffff);}PrintfDebugUart("LED IS OPEN.\r\n");}break;case 3:{PrintfDebugUart("Over.\r\n");}default:{;}}HAL_UART_Receive_IT(&huart1, RxBuffer, 4);//循环使能,才能不断接收}}/* USER CODE END 4 */

实验结果

在手机上显示波形,且可以通过按键控制灯的亮灭:

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