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

本文主要是介绍国产航顺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: 超声波测距模块串口通信数据接收与处理的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/685866

相关文章

Python获取中国节假日数据记录入JSON文件

《Python获取中国节假日数据记录入JSON文件》项目系统内置的日历应用为了提升用户体验,特别设置了在调休日期显示“休”的UI图标功能,那么问题是这些调休数据从哪里来呢?我尝试一种更为智能的方法:P... 目录节假日数据获取存入jsON文件节假日数据读取封装完整代码项目系统内置的日历应用为了提升用户体验,

Python FastAPI+Celery+RabbitMQ实现分布式图片水印处理系统

《PythonFastAPI+Celery+RabbitMQ实现分布式图片水印处理系统》这篇文章主要为大家详细介绍了PythonFastAPI如何结合Celery以及RabbitMQ实现简单的分布式... 实现思路FastAPI 服务器Celery 任务队列RabbitMQ 作为消息代理定时任务处理完整

C#使用SQLite进行大数据量高效处理的代码示例

《C#使用SQLite进行大数据量高效处理的代码示例》在软件开发中,高效处理大数据量是一个常见且具有挑战性的任务,SQLite因其零配置、嵌入式、跨平台的特性,成为许多开发者的首选数据库,本文将深入探... 目录前言准备工作数据实体核心技术批量插入:从乌龟到猎豹的蜕变分页查询:加载百万数据异步处理:拒绝界面

Springboot处理跨域的实现方式(附Demo)

《Springboot处理跨域的实现方式(附Demo)》:本文主要介绍Springboot处理跨域的实现方式(附Demo),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不... 目录Springboot处理跨域的方式1. 基本知识2. @CrossOrigin3. 全局跨域设置4.

Java利用JSONPath操作JSON数据的技术指南

《Java利用JSONPath操作JSON数据的技术指南》JSONPath是一种强大的工具,用于查询和操作JSON数据,类似于SQL的语法,它为处理复杂的JSON数据结构提供了简单且高效... 目录1、简述2、什么是 jsONPath?3、Java 示例3.1 基本查询3.2 过滤查询3.3 递归搜索3.4

MySQL大表数据的分区与分库分表的实现

《MySQL大表数据的分区与分库分表的实现》数据库的分区和分库分表是两种常用的技术方案,本文主要介绍了MySQL大表数据的分区与分库分表的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有... 目录1. mysql大表数据的分区1.1 什么是分区?1.2 分区的类型1.3 分区的优点1.4 分

Mysql删除几亿条数据表中的部分数据的方法实现

《Mysql删除几亿条数据表中的部分数据的方法实现》在MySQL中删除一个大表中的数据时,需要特别注意操作的性能和对系统的影响,本文主要介绍了Mysql删除几亿条数据表中的部分数据的方法实现,具有一定... 目录1、需求2、方案1. 使用 DELETE 语句分批删除2. 使用 INPLACE ALTER T

python+opencv处理颜色之将目标颜色转换实例代码

《python+opencv处理颜色之将目标颜色转换实例代码》OpenCV是一个的跨平台计算机视觉库,可以运行在Linux、Windows和MacOS操作系统上,:本文主要介绍python+ope... 目录下面是代码+ 效果 + 解释转HSV: 关于颜色总是要转HSV的掩膜再标注总结 目标:将红色的部分滤

Python Dash框架在数据可视化仪表板中的应用与实践记录

《PythonDash框架在数据可视化仪表板中的应用与实践记录》Python的PlotlyDash库提供了一种简便且强大的方式来构建和展示互动式数据仪表板,本篇文章将深入探讨如何使用Dash设计一... 目录python Dash框架在数据可视化仪表板中的应用与实践1. 什么是Plotly Dash?1.1

Python实现自动化接收与处理手机验证码

《Python实现自动化接收与处理手机验证码》在移动互联网时代,短信验证码已成为身份验证、账号注册等环节的重要安全手段,本文将介绍如何利用Python实现验证码的自动接收,识别与转发,需要的可以参考下... 目录引言一、准备工作1.1 硬件与软件需求1.2 环境配置二、核心功能实现2.1 短信监听与获取2.