当前位置: 首页 > news >正文

国产航顺HK32F030M: 超声波测距模块串口通信数据接收与处理

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

参考代码


/**************************************************************************************************
* @file      usart_async_tx_no_int_rx_rxneint.c
* @brief     异步串口通信例程, 通过查询TXE标志发送数据,通过RXNE中断接收数据,当中断接收到数据后会将
*            收到的数据原样通过TX引脚发送出去
* @author    
* @date      
**************************************************************************************************/#include "bsp_usart.h"uint8_t   Rcv_data[4]={0};//接收数组
uint8_t   Rcv_flag=0;//接收标志
uint8_t   Cnt_cart=0;//接收数据长度static void USART_NVIC_Configurature(void)
{
//	NVIC_SetPriority(USART1_IRQn,0);
//	NVIC_EnableIRQ(USART1_IRQn);NVIC_InitTypeDef NVIC_InitStructure;/* 配置USART为中断源 */NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;/* 优先级*/NVIC_InitStructure.NVIC_IRQChannelPriority = 0;/* 使能中断 */NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;/* 初始化配置NVIC */NVIC_Init(&NVIC_InitStructure);
}static void USART_GPIO_Configurature(void)
{GPIO_InitTypeDef m_gpio;USART1_TX_IO_CLK_EN();USART1_RX_IO_CLK_EN();m_gpio.GPIO_Mode = GPIO_Mode_AF;m_gpio.GPIO_OType = GPIO_OType_PP;m_gpio.GPIO_Pin = USART1_TX_PIN;m_gpio.GPIO_PuPd = GPIO_PuPd_NOPULL;m_gpio.GPIO_Speed = GPIO_Speed_10MHz;GPIO_Init(USART1_TX_PORT, &m_gpio);GPIO_PinAFConfig(USART1_TX_PORT,USART1_TX_PIN_SOURCE,GPIO_AF_1); // TX--PA3m_gpio.GPIO_Pin = USART1_RX_PIN;GPIO_Init(USART1_RX_PORT, &m_gpio);GPIO_PinAFConfig(USART1_RX_PORT,USART1_RX_PIN_SOURCE,GPIO_AF_1);// RX--PD6
}void USART_Config(uint32_t bound)
{USART_InitTypeDef m_usart;//GPIO端口设置USART_GPIO_Configurature();// 函数调用RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);//USART 初始化设置m_usart.USART_BaudRate = bound;// 波特率m_usart.USART_HardwareFlowControl = USART_HardwareFlowControl_None;//无硬件数据流控制m_usart.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;//收发模式 接收发送都使能m_usart.USART_Parity = USART_Parity_No;//无奇偶校验位m_usart.USART_StopBits = USART_StopBits_1;//一个停止位m_usart.USART_WordLength = USART_WordLength_8b;//字长为8位数据格式USART_Init(USART1, &m_usart);//初始化串口1USART_Cmd(USART1, ENABLE);//使能串口1USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);//开启串口接受中断//Usart1 NVIC 配置USART_NVIC_Configurature();//函数调用 
}void USART_SendByte(uint8_t ch)
{while((USART1->ISR & USART_ISR_TXE) == 0);USART1->TDR = ch;  // 串口发送
}void USART_SendStringLen(uint8_t *p,uint16_t len)
{while(len--){USART_SendByte(*(p++));}
}//例如:
//产品应答 FF 07 A1 A7
//其中校验码 SUM=A8=(0x07+0xA1+0Xff)&0x00ff
//0x07 为距离的高位数据;
//0xA1 为距离的低位数据;
//距离值为 0x07A1; 转换成十进制为 1953; 单位为: 毫米
void uart_Run(void)//数据处理函数
{if(Rcv_flag==1){USART_Temp = ((uint16_t)Rcv_data[1]<<8) + Rcv_data[2] ; // 左移八位数据进行合并  例如:0x07<<8 = 0x0700       }
}// 串口中断服务函数 USART1_IRQHandler
//void USART1_IRQHandler(void)
//{
	uint32_t ch_rx_test;
//	if((USART1->ISR & USART_ISR_RXNE) != 0)
//	{
//		USART_Temp = USART1->RDR; // 串口接收
//		
//		Display_IntData((uint32_t)USART_Temp);
// 		USART_SendByte(USART_Temp);
//	}
//}void USART1_IRQHandler(void)
{if((USART1->ISR & USART_ISR_RXNE) != 0){	 	if(Cnt_cart<=3)//计数{Rcv_data[Cnt_cart]=USART1->RDR;//接收的数据存入数组if(Rcv_data[0]==0XFF)  // 帧格式为:0XFF+H_DATA+L_DATA+SUM{Cnt_cart++;//计数值累加}else{Cnt_cart =0;USART_ClearFlag(USART1,USART_FLAG_RXNE);//清除中断标志}}else{Cnt_cart=0;if(Rcv_data[0] == 0xFF && Rcv_data[3] == ((Rcv_data[1]+Rcv_data[2]+Rcv_data[0])&0x00FF))// 校验接收的数据是否正确  起始位 校验位 长度{Rcv_flag=1;//接收成功标志}  USART_ClearFlag(USART1,USART_FLAG_RXNE);//清除中断标志}		}//	else
//		{
//			if(USART_GetFlagStatus(USART1,USART_FLAG_ORE) != RESET)  // 相同代码 函数版 
//			{
//				USART_ReceiveData(USART1);
//				USART_ClearFlag(USART1,USART_FLAG_ORE);//清除中断标志
//			}					
//		}USART_ClearFlag(USART1,USART_FLAG_ORE);//清除中断标志
}

资料下载

  • 【CSDN】 资料:HK32F030M超声波测距(20240206)

  • 【CSDN】PCB:隆鑫样品-超声波测距处理器-‎2024‎年‎1‎月‎28‎日

相关文章:

国产航顺HK32F030M: 超声波测距模块串口通信数据接收与处理

参考代码 /************************************************************************************************** * file usart_async_tx_no_int_rx_rxneint.c * brief 异步串口通信例程, 通过查询TXE标志发送数据,通过RXNE中断接收数据,当中断接收到数据后会将 * …...

idea:如何连接数据库

1、在idea中打开database: 2、点击 ‘’ ---> Data Source ---> MySQL 3、输入自己的账号和密码其他空白处可以不填&#xff0c;用户和密码可以在自己的mysql数据库中查看 4、最后选择自己需要用的数据库&#xff0c;点击运用ok&#xff0c;等待刷新即可 最后&#xff1a…...

JS中ES5和ES6的区别

前言 ES5是JavaScript的第五个修订版本&#xff0c;于2009年发布。而ES6是JavaScript的第六个修订版本&#xff0c;也称为ES2015&#xff0c;于2015年发布。以下是它们两个版本之前的一些区别&#xff1a; 变量声明方式 在ES5中&#xff0c;使用var关键字进行变量声明&#…...

软考24-上午题-图1

一、数据结构的回忆 线性结构&#xff1a;&#xff08;一对一&#xff09; 除首结点没有前驱、末尾结点没有后继外&#xff0c;一个结点只有唯一的一个直接前驱和唯一的一个直接后继。 树结构&#xff1a;&#xff08;一对多&#xff09; 除根节点没有前驱节点外&#xff0c;…...

书生·浦语大模型第四课作业

基础作业&#xff1a; 构建数据集&#xff0c;使用 XTuner 微调 InternLM-Chat-7B 模型, 让模型学习到它是你的智能小助手&#xff0c;效果如下图所示&#xff0c;本作业训练出来的模型的输出需要将不要葱姜蒜大佬替换成自己名字或昵称&#xff01; 1.安装 # 如果你是在 Int…...

勒索攻击风起云涌,Sodinokibi深度分析

前言 Sodinokibi勒索病毒&#xff0c;又称为REvil勒索病毒&#xff0c;这款勒索病毒最早在国内被发现是2019年4月份&#xff0c;笔者在早期分析这款勒索病毒的时候就发现它与其他勒索病毒不同&#xff0c;于是被笔者称为GandCrab勒索病毒的“接班人”&#xff0c;为什么它是Ga…...

1124. 骑马修栅栏(欧拉路径,模板)

农民John每年有很多栅栏要修理。 他总是骑着马穿过每一个栅栏并修复它破损的地方。 John是一个与其他农民一样懒的人。 他讨厌骑马&#xff0c;因此从来不两次经过一个栅栏。 你必须编一个程序&#xff0c;读入栅栏网络的描述&#xff0c;并计算出一条修栅栏的路径&#xf…...

C# CAD2016获取数据操作BlockTableRecord、Polyline、DBObject

一、数据操作说明 //DBObject 基础类 DBObject dbObj (DBObject)tr.GetObject(outerId, OpenMode.ForRead); //Polyline 线段类 Polyline outerPolyline (Polyline)tr.GetObject(outerId, OpenMode.ForRead); //BlockTableRecord 块表类 BlockTableRecord modelSpace (Bloc…...

java SSM新闻管理系统myeclipse开发mysql数据库springMVC模式java编程计算机网页设计

一、源码特点 java SSM新闻管理系统是一套完善的web设计系统&#xff08;系统采用SSM框架进行设计开发&#xff0c;springspringMVCmybatis&#xff09;&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S…...

Linux_线程

线程与进程 多级页表 线程控制 线程互斥 线程同步 生产者消费者模型 常见概念 下面选取32位系统举例。 一.线程与进程 上图是曾经我们认为进程所占用的资源的集合。 1.1 线程概念 线程是一个执行分支&#xff0c;执行粒度比进程细&#xff0c;调度成本比进程低线程是cpu…...

【selenium】

selenium是一个Web的自动化测试工具&#xff0c;最初是为网站自动化测试而开发的。Selenium可以直接调用浏览器&#xff0c;它支持所有主流的浏览器。其本质是通过驱动浏览器&#xff0c;完成模拟浏览器操作&#xff0c;比如挑战&#xff0c;输入&#xff0c;点击等。 下载与打…...

HX711压力传感器学习一(STM32)

目录 原理图&#xff1a;​ 引脚介绍&#xff1a; HX711介绍工作原理: 程序讲解&#xff1a; 整套工程&#xff1a; 发送的代码工程&#xff0c;与博客的不一致&#xff0c;如果编译有报错请按照报错和博客进行修改 原理图&#xff1a; 引脚介绍&#xff1a; VCC和GND引…...

作业2.13

1、选择题 1.1、若有定义语句&#xff1a;int a[3][6]; &#xff0c;按在内存中的存放顺序&#xff0c;a 数组的第10个元素是 D A&#xff09;a[0][4] B) a[1][3] C)a[0][3] D)a[1][4] 1.2、有数组 int a[5] {10&#xff0c;20&#xff0c;30&#xff0c;40&#xff0c;50},…...

ArcGIS学习(七)图片数据矢量化

ArcGIS学习(七)图片数据矢量化 通过上面几个任务的学习,大家应该已经掌握了ArcGIS的基础操作,并且学习了坐标系和地理数据库这两个非常重要且稍微难一些的专题。从这一任务开始,让我们进入到实战案例板块。 首先进入第一个案例一一图片数据矢量化。 我们在平时的工作学…...

G口大流量服务器选择的关键点有哪些?

G口服务器指的是接入互联网的带宽达到1Gbps以上的服务器&#xff0c;那么选择使用G口大流量服务器的用户需要注意哪些选择 关键点呢?小编为您整理关于G口大流量服务器的关键点。 G口服务器通常被用于需要大带宽支持的业务场景&#xff0c;比如视频流媒体、金融交易平台、电子商…...

MongoDB聚合:$unset

使用$unset阶段可移除文档中的某些字段。从版本4.2开始支持。 语法 移除单个字段&#xff0c;可以直接指定要移除的字段名&#xff1a; { $unset: "<field>" }移除多个字段&#xff0c;可以指定一个要移除字段名的数组&#xff1a; { $unset: [ "<…...

DS Wannabe之5-AM Project: DS 30day int prep day14

Q1. What is Alexnet? Q2. What is VGGNet? Q3. What is VGG16? Q4. What is ResNet? At the ILSVRC 2015, so-called Residual Neural Network (ResNet) by the Kaiming He et al introduced the anovel architecture with “skip connections” and features heavy b…...

【程序设计竞赛】C++与Java的细节优化

必须强调下&#xff0c;以下的任意一种优化&#xff0c;都应该是在本身采用的算法没有任何问题情况下的“锦上添花”&#xff0c;而不是“雪中送炭”。 如果下面的说法存在误导&#xff0c;请专业大佬评论指正 读写优化 C读写优化——解除流绑定 在ACM里&#xff0c;经常出现…...

Java缓冲流——效率提升深度解析

前言 大家好&#xff0c;我是chowley&#xff0c;在我之前的项目中&#xff0c;用到了缓冲流来提高字符流之间的比较速度&#xff0c;缓冲流的主要作用类似于数据库缓存&#xff0c;提高IO操作效率。 缓冲流 在Java的输入输出操作中&#xff0c;缓冲流是提高性能的重要工具之…...

16 亚稳态原理和解决方案

1. 亚稳态原理 亚稳态是指触发器无法在某个规定的时间段内到达一个可以确认的状态。在同步系统中&#xff0c;输入总是与时钟同步&#xff0c;因此寄存器的setup time和hold time是满足的&#xff0c;一般情况下是不会发生亚稳态情况的。在异步信号采集中&#xff0c;由于异步…...

深入浅出Asp.Net Core MVC应用开发系列-AspNetCore中的日志记录

ASP.NET Core 是一个跨平台的开源框架&#xff0c;用于在 Windows、macOS 或 Linux 上生成基于云的新式 Web 应用。 ASP.NET Core 中的日志记录 .NET 通过 ILogger API 支持高性能结构化日志记录&#xff0c;以帮助监视应用程序行为和诊断问题。 可以通过配置不同的记录提供程…...

基于uniapp+WebSocket实现聊天对话、消息监听、消息推送、聊天室等功能,多端兼容

基于 ​UniApp + WebSocket​实现多端兼容的实时通讯系统,涵盖WebSocket连接建立、消息收发机制、多端兼容性配置、消息实时监听等功能,适配​微信小程序、H5、Android、iOS等终端 目录 技术选型分析WebSocket协议优势UniApp跨平台特性WebSocket 基础实现连接管理消息收发连接…...

【机器视觉】单目测距——运动结构恢复

ps&#xff1a;图是随便找的&#xff0c;为了凑个封面 前言 在前面对光流法进行进一步改进&#xff0c;希望将2D光流推广至3D场景流时&#xff0c;发现2D转3D过程中存在尺度歧义问题&#xff0c;需要补全摄像头拍摄图像中缺失的深度信息&#xff0c;否则解空间不收敛&#xf…...

vue3 定时器-定义全局方法 vue+ts

1.创建ts文件 路径&#xff1a;src/utils/timer.ts 完整代码&#xff1a; import { onUnmounted } from vuetype TimerCallback (...args: any[]) > voidexport function useGlobalTimer() {const timers: Map<number, NodeJS.Timeout> new Map()// 创建定时器con…...

【HTML-16】深入理解HTML中的块元素与行内元素

HTML元素根据其显示特性可以分为两大类&#xff1a;块元素(Block-level Elements)和行内元素(Inline Elements)。理解这两者的区别对于构建良好的网页布局至关重要。本文将全面解析这两种元素的特性、区别以及实际应用场景。 1. 块元素(Block-level Elements) 1.1 基本特性 …...

【C语言练习】080. 使用C语言实现简单的数据库操作

080. 使用C语言实现简单的数据库操作 080. 使用C语言实现简单的数据库操作使用原生APIODBC接口第三方库ORM框架文件模拟1. 安装SQLite2. 示例代码:使用SQLite创建数据库、表和插入数据3. 编译和运行4. 示例运行输出:5. 注意事项6. 总结080. 使用C语言实现简单的数据库操作 在…...

如何在最短时间内提升打ctf(web)的水平?

刚刚刷完2遍 bugku 的 web 题&#xff0c;前来答题。 每个人对刷题理解是不同&#xff0c;有的人是看了writeup就等于刷了&#xff0c;有的人是收藏了writeup就等于刷了&#xff0c;有的人是跟着writeup做了一遍就等于刷了&#xff0c;还有的人是独立思考做了一遍就等于刷了。…...

嵌入式学习笔记DAY33(网络编程——TCP)

一、网络架构 C/S &#xff08;client/server 客户端/服务器&#xff09;&#xff1a;由客户端和服务器端两个部分组成。客户端通常是用户使用的应用程序&#xff0c;负责提供用户界面和交互逻辑 &#xff0c;接收用户输入&#xff0c;向服务器发送请求&#xff0c;并展示服务…...

C++.OpenGL (20/64)混合(Blending)

混合(Blending) 透明效果核心原理 #mermaid-svg-SWG0UzVfJms7Sm3e {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-SWG0UzVfJms7Sm3e .error-icon{fill:#552222;}#mermaid-svg-SWG0UzVfJms7Sm3e .error-text{fill…...

Java数值运算常见陷阱与规避方法

整数除法中的舍入问题 问题现象 当开发者预期进行浮点除法却误用整数除法时,会出现小数部分被截断的情况。典型错误模式如下: void process(int value) {double half = value / 2; // 整数除法导致截断// 使用half变量 }此时...