国产航顺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‎日

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/678611.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2月11日作业

1、请使用递归实现n! 代码&#xff1a; #include<stdio.h> #include<string.h> #include<stdlib.h>int fun(int n) {if(n1)return 1;else{return n*fun(n-1);} }int main(int argc, const char *argv[]) {int n;printf("please enter n:");scanf…

【浙大版《C语言程序设计实验与习题指导(第4版)》】实验7-1-6 求一批整数中出现最多的个位数字(附测试点)

定一批整数&#xff0c;分析每个整数的每一位数字&#xff0c;求出现次数最多的个位数字。例如给定3个整数1234、2345、3456&#xff0c;其中出现最多次数的数字是3和4&#xff0c;均出现了3次。 输入格式&#xff1a; 输入在第1行中给出正整数N&#xff08;≤1000&#xff0…

cesium系列篇:Entity vs Primitive 源码解析(从Entity到Primitive)02

上篇文章中&#xff0c;我们介绍了使用viewer.entities.add添加entity之后的信号传递以及最后entity对象被传递到GeometryVisualizer&#xff1b; 这篇文章&#xff0c;我们则介绍如何在逐帧渲染的过程中根据GeometryVisualizer中的entity对象创建相应的primitive 这是下文中…

vue3 之 组合式API—模版引用

模版引用的概念 通过ref标识获取真实的dom对象或者组件实例对象 如何使用&#xff08;以获取dom为例 组件同理&#xff09; 1️⃣调用ref函数生成一个ref对象 2️⃣通过ref标识绑定ref对象到标签 dom中使用 父组件中可以看到打印出来proxy里面只有一个属性&#xff0c;其他…

【Linux】学习-文件的软硬链接

文件的软硬链接 在上一篇拓展篇—文件系统中我们介绍过文件元的概念&#xff1a; 我们在使用ls -l命令查看文件元信息的时候&#xff0c;有一个硬链接数&#xff0c;说明文件的硬链接数属于文件的属性之一&#xff0c;那么硬链接究竟是什么呢&#xff1f;软链接又是什么呢&…

Spring AI - 使用向量数据库实现检索式AI对话

Spring AI - 使用向量数据库实现检索式AI对话 Spring AI 并不仅限于针对大语言模型对话API进行了统一封装&#xff0c;它还可以通过简单的方式实现LangChain的一些功能。本篇将带领读者实现一个简单的检索式AI对话接口。 一、需求背景 在一些场景下&#xff0c;我们想让AI根据…

华为机考入门python3--(10)牛客10-字符个数统计

分类&#xff1a;字符 知识点&#xff1a; 字符的ASCII码 ord(char) 题目来自【牛客】 def count_unique_chars(s): # 创建一个空集合来保存不同的字符 unique_chars set() # 遍历字符串中的每个字符 for char in s: # 将字符转换为 ASCII 码并检查是否在范围内 #…

KEIL-MDK的时间戳之time.h 结合gd32f1的RTC应用

KEIL-MDK的时间戳之time.h 的应用 1 时间戳介绍 现在物联网产品的在进行通讯的时候&#xff0c;需要加入时间戳的这个信息参数&#xff0c;方便服务器和产品之间交换时间信息。 时间戳是计算机系统中用来表示日期和时间的一种方式&#xff0c;通常是一个数字或者一串字符&am…

[优雅的面试] 进程 线程 协程分的清

面试官大佬&#xff1a;小伙子&#xff0c;咱今儿个先聊聊进程线程这块的知识哈&#xff0c;就先说说进程吧。 我&#xff1a;存储在硬盘中的代码是静态文件&#xff0c;运行中的程序被称为进程。进程之间数据是相互隔离的。 一般说来&#xff0c;一个进程并不是自始至终连续不…

Vits2.3-Extra-v2:中文特化,如何训练及推理(新手教程)

环境&#xff1a; Vits2.3-Extra-v2:中文特化修复版 auto_DataLabeling 干声10分钟左右.wav 问题描述&#xff1a; Vits2.3-Extra-v2:中文特化&#xff0c;如何训练及推理&#xff08;新手教程&#xff09; 解决方案&#xff1a; 一、准备数据集 切分音频 本次音频数据…

管理就是闭环

管理是什么&#xff1f;这个问题没有一个统一的答案。本文提供一个管中窥豹的答案&#xff1a;管理就是闭环。 作为基层管理者&#xff0c;日常管理事务&#xff0c;一个是目标闭环&#xff0c;一个是执行闭环。这分别对应敏捷PO和Scrum Master的职责。PO的职责是确保目标闭环&…

猫头虎分享已解决Bug ‍ || TypeError: props is not a function (React)

博主猫头虎的技术世界 &#x1f31f; 欢迎来到猫头虎的博客 — 探索技术的无限可能&#xff01; 专栏链接&#xff1a; &#x1f517; 精选专栏&#xff1a; 《面试题大全》 — 面试准备的宝典&#xff01;《IDEA开发秘籍》 — 提升你的IDEA技能&#xff01;《100天精通鸿蒙》 …

05.坐标系

1. 坐标系原点 坐标系原点就是屏幕/窗口的左上角&#xff0c;X向右增长&#xff0c;Y向下增长。 2.设置控件位置 设置控件位置&#xff0c;就相当于是需要指定控件的坐标&#xff0c;对于该控件来说&#xff0c;其坐标原点是其父窗口/父控件的左上角。 设置方法就是通过控件的…

创新S3存储桶检索:Langchain社区S3加载器搭载OpenAI API

在瞬息万变的数据存储和处理领域&#xff0c;将高效的云存储解决方案与先进的 AI 功能相结合&#xff0c;为处理大量数据提供了一种变革性的方法。本文演示了使用 MinIO、Langchain 和 OpenAI 的 GPT-3.5 模型的实际实现&#xff0c;重点总结了存储在 MinIO 存储桶中的文档。 …

leetcode:62.不同路径

动态规划 注意&#xff1a;用深搜或者广搜会超时 dp含义dp[i,j]&#xff1a;从&#xff08;0&#xff0c;0&#xff09;到&#xff08;i&#xff0c;j&#xff09;的路径个数 递推公式&#xff1a;dp[i][j] dp[i-1][j] dp[i][j-1] 初始化&#xff1a;for(i 0,i<m,i) …

[职场] 面试被问优点的回答参考 #知识分享#其他#学习方法

面试被问优点的回答参考 当面试官问你最大的优点是什么&#xff1f;回答1&#xff1a; 我擅长合理地安排时间&#xff0c; 作为助理&#xff0c; 我的杂事很多&#xff0c; 总是觉得手边有做不完的事情&#xff0c; 所以我特别注意时间管理&#xff0c; 这样才能高效地工作&am…

继承

1.继承的作用 有些类与类之间存在特殊关系&#xff0c;下级别的成员除了拥有上一级别的共性&#xff0c;还有自己的特性。 这个时候我们就可以考虑利用继承技术&#xff0c;减少重复代码。 总结&#xff1a; 继承的好处&#xff1a;可以减少重复的代码 class A : public B;…

猫头虎分享已解决Bug || KeyError: ‘The truth value of a Series is ambiguous‘

博主猫头虎的技术世界 &#x1f31f; 欢迎来到猫头虎的博客 — 探索技术的无限可能&#xff01; 专栏链接&#xff1a; &#x1f517; 精选专栏&#xff1a; 《面试题大全》 — 面试准备的宝典&#xff01;《IDEA开发秘籍》 — 提升你的IDEA技能&#xff01;《100天精通鸿蒙》 …

EasyExcel动态列导出

测试代码地址&#xff1a;https://gitee.com/wangtianwen1996/cento-practice/tree/master/src/test/java/com/xiaobai/easyexcel/dynamiccolumn 官方文档&#xff1a;https://easyexcel.opensource.alibaba.com/docs/2.x/quickstart/write 一、实现方式 1、根据需要导出的列…

假期刷题打卡--Day26

1、MT1212乘法表 请编写一个简单程序&#xff0c;输出九九乘法表。输入n&#xff0c;就输出乘法表到n的地方。 格式 输入格式&#xff1a; 输入整型 输出格式&#xff1a; 输出整型。形式如&#xff1a;1*11 样例 1 输入&#xff1a; 5输出&#xff1a; 1*11 2*12 …