嵌入式实验---实验五 串口数据接收实验

一、实验目的

1、掌握STM32F103串口数据接收程序设计流程;

2、熟悉STM32固件库的基本使用。

二、实验原理

1、STM32F103R6能通过查询中断方式接收数据,每接收到一个字节,立即向对方发送一个相同内容的字节,并把该字节的十六进制码显示在两位数码管上。

三、实验设备和器材

电脑、Keil uVision5软件、Proteus 8 Professional软件

四、实验内容和步骤

4.1 代码开发

按照书本中实验流程在Keil中完成串口数据接收实验的代码开发;

4.2 原理图设计

在Proteus中完成原理图的设计,如图6所示。

图6 串口数据接收实验原理图

五、实验记录和实验结果

5.1 实验效果记录(附照片即可)

5.2 实验效果说明

程序开始运行之后,此时串口调试助手接收到“Hello USART!”字符串。这是执行printf(“Hello USART!”);语句产生的效果,说明printf函数可用。

程序运行刚开始,两个数码管显示“00”.此时把串口调试助手的接收区和发送区的“十六进制显示”可选项都勾选,在发送区输入一个十六进制数,并单击“手动发送”。可以看到数码管上显示的十六进制数跟刚才发送的内容是相同的,并且串口调试助手的接收区也接收到相同的十六进制数,实现了项目目标的要求。

六、实验预习要求

  1. 实验前认真阅读本实验指导;
  2. 熟悉书本中相关操作及相关器件。
  3. 完成5.1和5.2内容。

七、思考题

1. 在串口发送和接收数据时,其中同步和异步的特点各是什么

同步传输:

  1. 数据的传输在时钟信号的同步控制下进行,发送端和接收端需要共享时钟信号或者使用时钟同步的协议。
  2. 通常会有更高的数据传输速率,适合于需要高效率数据传输的场景。
  3. 传输的过程中要求发送端和接收端的速度一致,以确保数据的同步性和正确性。

异步传输:

  1. 数据的传输不需要共享时钟信号,而是通过起始位、数据位、校验位和停止位来确定数据的开始和结束。
  2. 发送端和接收端的时钟可以是不同的,通信双方不需要时钟同步。

2、使用串口功能时的配置流程

  1. 选择串口和引脚配置:确定要使用的串口号(如UART0、UART1等)和相应的物理引脚连接。需要查阅硬件手册或者开发板文档,确认串口对应的引脚及其功能。

  1. 设置串口参数:确定串口通信的参数,包括波特率(Baud Rate)、数据位、停止位、校验位等。波特率是串口通信的速率,需要发送端和接收端设置相同的波特率才能正常通信。

  1. 数据位一般为5、6、7或8位;停止位通常为1位或2位;校验位可以选择无校验、奇校验或偶校验。

  1. 配置串口控制寄存器:根据硬件平台的要求,通过写入串口控制寄存器来配置波特率、数据位、停止位、校验位等参数。不同的微控制器或者芯片可能有不同的寄存器配置方法,需要查阅相关的芯片手册或者数据表来了解具体操作。

  1. 使能串口功能:配置完成后,使能串口,允许串口开始工作。这通常涉及设置相应的控制位或者寄存器,以启用串口发送和接收功能。

  1. 编写串口发送和接收代码:编写发送数据和接收数据的代码逻辑,通常涉及到发送数据函数和接收数据函数的实现。发送数据时,将要发送的数据写入到串口发送缓冲区,然后由串口硬件发送。接收数据时,通过轮询或者中断方式,从串口接收缓冲区读取接收到的数据。

  1. 调试和测试:在实际应用中,进行串口功能的调试和测试,确保发送和接收的数据符合预期。可以通过串口调试助手或者类似工具来监视串口数据的发送和接收情况,以便及时发现和解决问题。

  1. 优化和稳定性测试:针对具体应用需求,优化串口通信的性能和稳定性。可以考虑使用硬件流控制或者 DMA(直接内存访问)等技术来提高数据传输效率和可靠性。

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

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

相关文章

Python: HexBinDecOct

因为: f0b1001110# 十进制 int()a0*2**01*2**11*2**21*2**30*2**40*2**51*2**6print(a)# 八进制 oct()print(78/8,78%8)# 110 001 001 8 116print(1*2**00*2**10*2**2,1*2**00*2**10*2**2,0*2**01*2**11*2**2)#十六进制 hex()#0 100 1110 16 4Eprint(sixteenFoo(0*…

如何在Qt Designer中管理QSplitter

问题描述 当按下按钮时,我希望弹出一个对话框,用户可以在其中选择内容并最终按下 ‘Ok’ 按钮。我想在这个对话框中放置一个 QSplitter,左侧面板将显示树状结构,右侧将显示其他内容。如何正确实现这一点? 从 Qt 的示…

oracle 主从库中,从库APPLIED为YES ,但是主库任然为NO

主库 从库 从库已经APPLIED但是主库为APPLIED, 主数据库和备用数据库之间的ARCH-RFS心跳Ping负责更新主数据库上v$archived_log的APPLICED列。 在主数据库上有一个指定的心跳ARCn进程来执行此Ping。如果此进程开始挂起,它将不再与远程RFS进程通信&#…

git拉取gitee项目到本地

git安装等不做赘述。 根据需要选择不同操作 1.只是单纯拉取个项目,没有后续的追踪等操作 不需要使用git init初始化本地文件夹 新建一个文件夹用于存储项目,右键选择 git bash here 会出现命令行窗口 如果像我一样,只是拉取个项目作业&…

Python爬虫技术:动态JavaScript加载音频的解析

在当今的互联网世界中,JavaScript已成为构建丰富交互体验不可或缺的技术。然而,对于网络爬虫开发者来说,JavaScript动态生成的内容却带来了不小的挑战。音频内容的动态加载尤其如此,因为它们往往涉及到复杂的用户交互和异步数据加…

xxe漏洞学习

一、什么是xxe漏洞 XXE就是XML外部实体注入,当允许引用外部实体时, XML数据在传输中有可能会被不法分子被修改,如果服务器执行被恶意插入的代码,就可以实现攻击的目的攻击者可以通过构造恶意内容,就可能导致任意文件读…

kafka(四)消息类型

一、同步消息 1、生产者 同步发送的意思就是,一条消息发送之后,会阻塞当前线程,直至返回 ack。 由于 send 方法返回的是一个 Future 对象,根据 Futrue 对象的特点,我们也可以实现同 步发送的效果,只需在调…

python---OpenCv(二),背景分离方法较有意思

目录 边界矩形 旋转矩形(最小外接矩形): 计算轮廓 找4个点的坐标 把浮点型转为Int 画轮廓 边界矩形--(最大外接矩形) 转灰度 找轮廓 找顶点 画矩形 显示 背景分离方法(这个很好玩,可以识别在动的物体) 边…

Redis源码学习:quicklist的设计与实现

为什么需要quicklist 假设你已经知道了ziplist的缺陷: 虽然节省空间,但是申请内存必须是连续的,如果内存占用比较多,申请效率低要存储大量数据,超过了ziplist的最佳上限后,性能有影响 借鉴分片思想&…

栅格数据重心迁移变化分析

目前网络上大多是针对矢量重心迁移进行计算,或把栅格转矢量在进行计算,可以不用怎么麻烦,可以直接利用栅格进行得出多期数据的重心,然后进行变化分析等方面的分析。 矢量数据可以通过下面方式进行重心计算: 使用ArcGIS…

1.1 数据采集总览

正所谓巧妇难为无米之炊,数据采集是数据处理的第一步。 什么是数据采集 数据采集,也称为数据收集,是将原始数据从各种来源获取并存储起来的过程。这个过程是数据分析和数据仓库建设的第一步,涉及到从不同的数据源中提取数据&…

Element-UI实现el-dialog弹框拖拽功能

在实际开发中,会发现有些系统,弹框是可以在浏览器的可见区域自由拖拽的,这极大方便用户的操作。但在查看Element-UI中弹框(el-dialog)组件的文档时,发现并未实现这一功能。不过也无须担心,vue中…

搜索引擎数据库介绍

搜索引擎数据库的定义 搜索引擎数据库是一类专门用于数据内容搜索的NoSQL数据库,是非结构化大数据处理分析领域中重要的角色。搜索引擎数据库使用索引对数据中的相似特征进行归类,并提高搜索能力。通过对索引和检索过程的优化,以处理大量文本…

前后端经验分享:秋招春招赛道如何选择

前言:考研考公?国企互联网?老白小粉也曾对未来的方向选择产生迷茫,但最终老白小粉都选择了就业 →前端春招秋招经验分享 →后端春招秋招经验分享 因此今天这篇文章主要针对秋招春招的就业赛道给予学弟学妹们一些建议。 对于计算机…

【深度学习系列】全面指南:安装TensorFlow的CPU和GPU版本

本博客旨在为初学者提供一份全面的指南,介绍如何根据个人电脑的配置选择并安装适合的TensorFlow版本。内容涵盖了如何查看电脑显卡型号以确定是安装CPU还是GPU版本的TensorFlow,创建Python虚拟环境,以及使用conda命令查找可用的TensorFlow版本…

厂里资讯之异步通知文章上下架

kafka及异步通知文章上下架 1)自媒体文章上下架 需求分析 2)kafka概述 消息中间件对比 特性ActiveMQRabbitMQRocketMQKafka开发语言javaerlangjavascala单机吞吐量万级万级10万级100万级时效性msusmsms级以内可用性高(主从)高(主从&#…

在 iPhone 上恢复已删除联系人的 5 种简便方法

想象一下:您正在 iPhone 上滚动并搜索要拨打的联系人,但却找不到任何结果。然后您想起昨晚您试图删除一个名字相似的联系人,但不知何故删除了错误的联系人。或者您的孩子错误地删除了一些联系人。这些情况足以让您感到迷茫。但别担心&#xf…

五种HTTP数据传输方式

在前端开发过程中,后端主要提供 http 接口来传输数据,而这种数据传输方式主要有五种: url paramqueryform-urlencodedform-datajson 下面就让我们一起来了解一下在Nest.js中如何使用这五种HTTP数据传输方式: 一,创建项目 使用nest new 创建一个nest的项目 nest new 项目名称 …

1panel OpenResty 设置网站重定向

当我们部署网站时需要,输入"cheshi.com"域名回车,希望他自动跳转https://cheshi.com/indx/,而不是直接跳转https://cheshi.com时可以利用重定向来实现, 这里演示的是 1panel 如何设置(nginx 貌似也是这样配…

IPv6 address status lifetime

IPv6 地址状态转换 Address lifetime (地址生存期) 每个配置的 IPv6 单播地址都有一个生存期设置,该设置确定该地址在必须刷新或替换之前可以使用多长时间。某些地址设置为“永久”并且不会过期。“首选”和“有效”生存期用于指定其使用期限和可用性。 自动配置的…