STM32单片机与蓝牙模块HC-05通信数据帧处理

2023-05-16

本章将会详细讲述蓝牙模块(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(使用前将#替换为@)

STM32单片机与蓝牙模块HC-05通信数据帧处理 的相关文章

  • 如何创建一个项目(学习笔记)

    前言 xff1a 欢迎来到本次教程 这篇文章旨在深入解析在 B 站上的 Vue3 后台管理项目 xff0c 同时也为您提供了创建此类项目的实践思路 我们将通过这个笔记系统地梳理一个项目的整体框架 xff0c 涵盖了我们在 Vue 课程中学习
  • PX4学习之uorb

    PX4学习之uorb 1线程 1 1优点 在Linux系统下 xff0c 启动一个新的进程必须分配给它独立的地址空间 xff0c 建立众多的数据表来维护它的代码段 堆栈段和数据段 xff0c 这是一种 34 昂贵 34 的多任务工作方式 而
  • 53 Command “python setup.py egg_info“ failed with error

    53 1 引言 今天在Ubuntu环境下搭建安信科技的ESP8266开发环境 xff0c 到配置这一步骤时出现了 xff0c 一个问题 xff0c 网上一顿查阅 xff0c 然后并没有实际解决 xff0c 后面查到外文blog外国朋友遇到跟
  • vue2的钩子函数

    一 定义 钩子函数是一个组件从引入到销毁的全过程中提供的函数 xff0c 我们可以在钩子函数中写我们自己的代码 xff0c 比如说请求数据 赋值 注册事件等 二 钩子函数类型 钩子函数按照组件生命周期分为 xff1a 挂载阶段 xff08
  • gazebo打不开或者无响应?

    1 打不开 xff0c 显示无路径 报错 xff1a gazebo error while loading shared libraries libblas so 3 cannot open shared object file No su
  • 【超详细】树莓派4B 英特尔神经棒2代 Openvino安装记录

    主要参考了英特尔官方文档https docs openvinotoolkit org 2019 R3 1 docs install guides installing openvino raspbian html 还有同济子豪兄在达尔文的b
  • 2021-08-19-leetcode-00001

    二分查找 704 给定一个 n 个元素有序的 xff08 升序 xff09 整型数组 nums 和一个目标值 target xff0c 写一个函数搜索 nums 中的 target xff0c 如果目标值存在返回下标 xff0c 否则返回
  • FreeRTOS系统开发指南【精简版】

    文件说明 该文件主要根据FreeRTOS系统的功能 对FreeRTOS系统应用API函数进行项目开发进行指导和快速阅览 方便用户通过该文件快速使用FreeRTOS的内部资源来进行项目开发 其中涉及任务 时间管理 队列 信号量 定时器 内存管
  • 立创EDA学习笔记(3)——PCB绘制

    使用更新 转换原理图到PCB xff0c 将原理图导入PCB后 xff0c 点击工程中的PCB切换到该页面 xff0c 接下来进行PCB绘制 目录 一 放置板框 二 绘制定位孔 三 布局 四 布线 五 修改位号丝印大小 六 添加丝印 七 添
  • A star算法在三维避障路径规划的应用

    A star算法在三维避障路径规划的应用 前言 前言 在实际工程应用中 运动目标的外形 大小直接影响到路径选择 针对三维复杂场景的碰撞检测和路径规划问题 提出了一种基于层次包围盒碰撞检测的实时路径规划优化算法 该优化算法在进行碰撞检测时 通
  • Jetson TX2零基础学习(一)——连线、刷机

    目录 一 背景介绍 二 连线 三 刷机 四 鸣谢 五 结束语 系列文章 一 背景介绍 大家好 xff0c 我是潇湘小硕士 xff0c 注册账号已经两年有余 xff0c 今天第一次发文 xff0c 希望能够帮助到大家 我是通信专业研一学生一枚
  • 嵌入式Linux C多任务编程(进程篇)

    这俩天刚整理完进程部分内容 xff0c 再做个一个总结以便后期回顾 1 什么是多任务 xff1f 单任务vs多任务 单任务 xff1a 一个任务执行结束才能执行下一个任务 xff0c 或者说在一个任务执行得过程中不能响应其他任务 xff0c
  • 如何在Ubuntu上安装Boost

    本文翻译自 xff1a How to install Boost on Ubuntu I 39 m on Ubuntu and I want to install Boost 我在Ubuntu上 xff0c 并且想安装Boost I tri
  • A D 20:基于S T M 32的DDS信号源设计

    直接数字频率合成 xff08 DDS xff09 xff1a 根据正弦函数的产生原理 xff0c 直接对输入参考时钟进行抽样 数字化 xff0c 从相位出发 xff0c 用不同的相位给出不同的电压幅度 xff0c 最后经滤波平滑输出所需的频
  • 【STM32/FreeRTOS】SysTick定时器及FreeRTOS系统节拍

    目录 一 SysTick定时器 1 SysTick寄存器介绍 xff08 1 xff09 控制及状态寄存器 xff08 2 xff09 重装载数值寄存器 xff08 3 xff09 当前数值寄存器 2 SysTick寄存器配置函数 二 Fr
  • 【FreeRTOS】任务调度与任务切换

    目录 一 任务调度 二 任务切换 三 关于PendSV 一 任务调度 在创建好任务函数后 xff0c 需要调用函数vTaskStartScheduler 开启任务调度器 xff0c 创建的任务在调度器的调度下执行 开启任务调度器函数为 xf
  • k8s —— pod、init 容器、及资源清单的使用

    k8s pod init 容器 及资源清单的使用 文章目录 k8s pod init 容器 及资源清单的使用podPod生命周期init 容器 资源清单查询帮助文档 实验docker 镜像批量操作k8s 常用命令pod 资源清单init 容
  • TIVA Launchpad编程解锁好盈天行者(20A)电调

    电调解锁方法 2ms高电平的pwm波 xff0c 400hz xff0c 持续5s以上 1ms高电平的pwm波 xff0c 持续2s 即可解锁 xff0c 之后输入1 2ms范围的高电平的pwm波即可控制电机的转速 这里是主函数 span
  • C++第五次上机实验总结(加深对类和对象的理解)

    实验目的 xff1a 进一步加深对类和对象的理解 掌握集中对象传递的使用方法 掌握静态成员的概念和使用 实验共分成三部分 xff0c 分别为part a part b part c 实验内容 xff1a part a 了解三种不同对象传递方
  • C++第六次上机实验总结

    一 实验目的 xff1a 掌握派生类的声明方法和派生类构造函数的定义方法 xff1b 掌握不同方式下 xff0c 基类成员在派生类中的访问属性和访问规则 xff1b 二 程序代码 xff1a h文件 include lt iostream

随机推荐

  • C++第八次上机实验总结(多态)

    一 实验目的 xff1a 掌握C 43 43 语言多态性的基本概念 xff1b 掌握运算符重载函数的声明和定义方式 xff1b 二 试验任务 xff1a 1 编写一个程序 xff0c 实现两个负数相加 xff08 分别用类外定义运算符重载函
  • 机器学习实战之k-近邻算法(6)---手写数字识别系统(0-9识别)

    from numpy import import operator from os import listdir 创建数据集 def createDataSet group 61 array 1 0 1 1 1 0 1 0 0 0 0 0
  • termux—手机远程连接服务器教程

    文章目录 下载安装换源安装ssh软件连接服务器参考 下载安装 官网 可以从google play store下载安装 xff0c 也可从github上下载安装最新版本 app图标 安装完成后 xff0c 一些基础操作可以参考Termux 高
  • VScode主题色更换

    最新版VScode主题色更换 宝 xff0c 你是否有觉得它默认的黑色有点太晃眼 xff0c 想要拥有一个绿色或者浅色调的主题色呢 xff1f 当你想更换的时候你上网搜了很多 xff0c 发现版本不一样就是很迷惑呢 xff1f 让薇语帮你解
  • ROS学习笔记(1)ROS安装(推荐使用鱼香ROS安装工具,少走很多弯路)

    ROS安装 后记 xff1a 提前说一下 xff0c 按照网上的大部分ROS安装教程你会在下面的第四步遇到问题 xff0c 然后在网上找各种解决办法 xff0c 运气好的话你会很快解决 xff0c 但是也可能卡住半天没解决 xff08 比如
  • ubuntu18.04运行LiLi-OM

    一 上github下代码 https github com KIT ISAS lili om 1 1安装gtsam4 0 链接 xff1a GTSAM GTSAM is a BSD licensed C 43 43 library that
  • 软件KEIL串口应用-- printf调试

    KEIL5 里面实现printf的功能 xff0c 需要修改一个函数 重写 xff1a fputc 包含头文件 在当前 c文件中包含这两个头文件 重写函数 首先从原理图判断单片机芯片与上位机 xff08 电脑 xff09 通信是通过那个串口
  • 构造函数后加:符号

    分为三种情况 class animal public animal cout gt gt 34 animal 34 class fish public animal public fish animal cout gt gt 34 fish
  • 在gitee上新建仓库,将本地项目上传到新建的gitee仓库中

    1 首先登录gitee xff0c 点击右上角 43 号 xff0c 选择新建仓库 2 输入仓库名称及仓库简介 xff0c 选择是否开源 xff0c 下方的三个可不选 3 点击添加后 xff0c 页面如图所示 注 xff1a 此时gitee
  • L8Linux应用开发综合实战-在线词典项目(day1、2、3)

    目录 一 在线词典项目介绍及框架搭建 一 有道词典流程分析及本项目在线词典介绍 1 有道词典功能分析 2 项目流程 二 在线词典项目演示 三 流程示意图分析 1 客户端 2 服务器 四 客户端代码框架搭建 五 服务器端代码框架搭建 模板结构
  • matlab灰度图转化及二值化

    matlab灰度图转化及二值化 matlab提供图像处理功能 xff0c 我们可将彩色图像灰度化 xff0c 并对其进行二值化处理 xff0c 其简要代码如下 xff1a i span class token operator 61 spa
  • Docker - 编译安装nginx镜像

    目录 知识点1 xff1a 制作镜像的常用指令 RUN和CMD ENTRYPOINT的区别 首先需要一个安装nginx的脚本 制作Dockerfile 开始制作镜像 查看镜像是否制作成功 启动一个容器来测试镜像 编译安装ngixn镜像升级版
  • 阿克曼结构移动机器人的gazebo仿真(五)

    阿克曼结构移动机器人的gazebo仿真 xff08 五 xff09 第四章 用xacro优化URDF并配置gazebo仿真插件 0 前言 上节用简易模型写了一个小车的URDF代码 xff0c 这一节将用xacro对其进行优化 xff0c 这
  • 百度2014校园招聘笔试题武汉站三道算法设计题

    百度2014校园招聘笔试题武汉站三道算法设计题 1 给定任意一个整整数 求比这个数大且最小的不重复数 就是相邻两位不同 xff0c 例如1231 如1101就是重复数 解 xff1a 思路 xff1a 每次将给定的值加上1 xff0c 然后
  • gazebo版本升级以及环境太暗的解决方法

    gazebo升级 使用下列代码可将gazebo升级为该版本的最新版 xff0c 适用于gazebo7与gazebo9 添加源 sudo sh c 39 echo 34 deb http packages osrfoundation org
  • (3分钟了解)SLAM后端优化的四大金刚!g2o ceres gtsam SE-Sync

    后端优化常用的库有g2o ceres gtsam 和 se sync 这篇博客首先介绍se sync xff0c 然后比较四种库之间的差异 编辑切换为居中 添加图片注释 xff0c 不超过 140 字 xff08 可选 xff09 编辑切换
  • 基于Adams联合MATLAB的联合仿真设置

    因为最近在做一个四足机器人的仿真在网上找了一些资料基本上都不是说得很明白 下面是我参考了一些资料自己做的一个项目和对一些细节做的总结 xff0c 希望对大家有所帮助和解惑 本次联合仿真用到的软件主要是这三个Solidworks2018 Ad
  • MSC_ LICENSE. FILE = D:ladamsMAGNTUDElicense .dat

    ADAMS一段时间不使用后重新打开出现 解决办法 xff1a 1 找到原下载解压后的文件目录 2 点击MSC Calc 20161130 exe按照提示重新生成license dat文件 3 复制新的license dat文件到之前安装AD
  • 两块STM32F1之间互相通信(串口)

    首先准备两块STM32F103的板子 xff0c 以我这个为例 xff0c 我准备了一块STM32F103和CH32F103最小系统板子 xff0c 其他杜邦线 下载器及接线方法以及通信原理不再多说 这里我用的是STM32F103最小系统发
  • STM32单片机与蓝牙模块HC-05通信数据帧处理

    本章将会详细讲述蓝牙模块 xff08 HC 05 xff09 和STM32单片机之间的通信收发的数据如何处理 xff0c 在测试开始前首先在手机上下载好一个蓝牙调试APP xff0c 此APP可以是手机端和PC端口的 xff0c 以我常用的