嵌入式实验报告:家用计时器

实验目的和要求

1、实验目的

  • 掌握STM32串口通信原理。
  • 学习编程实现STM32的UART通信
  • 掌握STM32中断程序设计流程。
  • 熟悉STM32固件库的基本使用。
  • 熟悉STM32定时器中断设计流程。

2、实验要求

设计一个家用计时器,其功能如下:

  1. 利用串口设置计时时间,格式:XX:XX:X  例如01:59:8(计时时间设置为1分59秒8,  8为0.8秒)
  2. 利用串口下发命令完成 启动计时、终止计时、暂停计时功能
  3. 当系统接收到启动命令后,运行灯LED0执行1秒频率的闪烁,同时发送给上位机格式为XX:XX:X计时时间,计时过程中每间隔10秒向上位机发送格式为XX:XX:X的剩余计时时间(计时器为倒计时器,从设定计时时间递减,直到00:00:0结束)
  4. 计时结束时LED0常亮,如设置新的计时时间,LED0熄灭;当通过终止计时命令提前终止计时后,系统向上位机输出“终止计时”,LED0熄灭
  5. 系统接收到暂停命令后,LED0常亮,向上位机发送剩余计时时间+暂停,系统停止计时,可以通过启动命令接着计时

说明:上位机为PC,系统指STM32;使用MDK、虚拟串口软件和串口调试助手完成软仿真,并以合适时间截图作为实验数据(证明完成以上功能的多个截图),串口调试助手软件应能显示时间戳,以便观察时间间隔;AB:CD:E格式的时间中CD为00~59,E为0~9。

硬件设计电路

1、本实验需要用到的硬件资源有:

1) 指示灯 DS0

2) 串口 1

2) 定时器 TIM3

本实验将通过串口1发送不同的命令控制TIM3 的中断来控制 DS0的亮灭和计时器的显示时间,DS0的电路在前面实验已经有体会了。而TIM3 属于 STM32 的内部资源,只需要软件设置即可正常工作。

2、串口和STM32通用定时器硬件原理概述:

Ⅰ、串口原理概述:

(1)串口硬件原理图

图 2.1  UART1 硬件原理图UART1 硬件原理图

图 2.2 串口引脚

PA9为STM32 UART1的输出线,PA10为 STM32 UART1的输入线。需要对这两个引脚进行初始化

(2)STM32 串口简介

串口通讯(Serial Communication), 是指外设和计算机间,通过数据信号线 、地线、控制线等,按位进行传输数据的一种通讯方式。这种通信方式使用的数据线少,在远距离通信中可以节约通信成本,但其传输速度比并行传输低。

串口通讯提供了一种灵活的方法来与使用工业标准NRZ异步串行数据格式的外部设备之间进行全双工数据交换。 UART 利用分数波特率发生器提供宽范围的波特率选择。它支持同步单向通信和半双工单线通信。它也支持LAN(局部互连网),智能卡协议和IrDA(红外数据组织)SIR ENDEC 规范,以及调制解调器(CTS/RTS)操作。它还允许多处理器通信。使用多缓冲器配置的DMA 方式,可以实现高速数据通信。

接口通过三个引脚与其他设备连接在一起(见图2.2)。任何UART双向通信至少需要两个脚:接收数据输入(RX)和发送数据输出(TX)。 RX:接收数据输入。通过采样技术来区别数据和噪音,从而恢复数据。 TX:发送数据输出。当发送器被禁止时,输出引脚恢复到它的I/O 端口配置。当发送器被激活,并且没东西发送时,TX 引脚处于高电平。

UART模式的操作具有下列特点:

1)8位或9位负载数据

2)奇校验、偶校验或者无奇偶校验

3)配置起始位和停止位电平

4)独立收发中断

5)独立收发DMA触发

6)奇偶校验和帧校验出错状态

UART模式提供全双工传送,接收器中的位同步不影响发送功能。传送一个UART字节包含1个起始位、8个数据位、1个作为可选项的第9位数据或者奇偶校验位再加上1个或2个停止位。注意,虽然真实的数据包含8位或者9位,但是,数据传送只涉及一个字节。

Ⅱ、STM32通用定时器原理概述:

(1)STM32通用定时器硬件原理:

   STM32的通用定时器是一个通过可编程预分频器驱动的16位自动装载计数器构成。

   STM32有4个通用定时器(TIM2、TIM3、TIM4、TIM5),它们适用于多种场合,除了基本的定时,它主要用在测量输入脉冲的频率、脉冲宽与输出PWM脉冲的场合,还具有编码器的接口。每个定时器都是完全独立的,没有互相共享任何资源。它们可以一起同步操作。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【WRF理论第十二期】Registry.EM 文件详解

【WRF理论第十二期】Registry.EM 文件详解 Registry.EM 文件的作用Registry.EM 文件的结构Registry.EM 文件内容理解如何修改 Registry.EM 文件以输出特定变量WRF-Urban 修改 Registry.EM 文件以输出 UCM 相关变量1. 修改 Registry.EM 文件2. 重新编译 WRF 注意事项参考 在 WRF…

Midjourney 图生图,真人二次元保持一致性,场景多元可选择

Midjourney 拥有强大的图生图的功能,下面我们就来看一下,如何在我们的AceDataCloud网站上实现将照片切换成任意的二次元场景,同时保持人物的一致性。 我们可以按照如下的步骤去实现人物一致性。 下面我们来看看效果吧,原图如下。…

三种复制只有阅读权限的飞书网络文档的方法

大家都知道,飞书是一款功能强大的在线协作工具,可以帮助团队更高效地协作和沟通。越来越多的资料都在使用飞书文档,在使用飞书的过程中,发现很多文档没有复制权限,如果想要摘抄笔记,只能一个字一个字地敲出…

【GL003】TCP/IP 协议

目录 一、TCP/IP协议简介 二、TCP/IP协议的分层模型 2.1 OSI模型的七层框架 2.2 TCP/IP协议层(四层) 2.2.1 TCP/IP协议层与ISO模型 2.2.2 TCP/IP协议层的作用 三、TCP协议的报文格式 3.1 什么是报文 3.2 TCP报文 四、TCP的通信连接 4.1 TCP…

Spring WebFlux学习笔记(二)

目标 运行第一个spring webflux项目 官网操作 https://start.spring.io/ 依赖、工具 jdk 21、idea、maven 运行过程 将下载的代码直接导入到idea后运行 运行上个笔记的例子 注意 需要更改为MediaType.TEXT_EVENT_STREAM_VALUE 未完待续。。。

【YOLOv8】安卓端部署-2-项目实战

文章目录 1 准备Android项目文件1.1 解压文件1.2 放置ncnn模型文件1.3 放置ncnn和opencv的android文件1.4 修改CMakeLists.txt文件 2 手机连接电脑并编译软件2.1 编译软件2.2 更新配置及布局2.3 编译2.4 连接手机 3 自己数据集训练模型的部署4 参考 1 准备Android项目文件 1.1…

基于CNN-LSTM的时序预测MATLAB实战

卷积神经网络(CNN)用于提取时间序列数据中的局部空间特征,通过卷积层和池化层的堆叠,CNN能够有效捕获数据中的短期模式和局部依赖关系。长短时记忆网络(LSTM)用于处理时间序列数据,特别擅长捕捉…

3D可视化产品定制,打造“所见即所得”的购物体验!

在当今数字化时代,3D可视化产品定制正逐步改变着消费者的购物体验与企业的销售模式,相较于大多仍停留在二维层面的线上定制服务,3D可视化产品定制为消费者提供了一个直观、互动且高度个性化的定制功能,并为消费者带来了沉浸式的购…

捉虫记录02-Nacos访问失败

目录 一、问题 二、排查 三、解决方案 一、问题 在访问nacos的时候出现以下问题: 二、排查 先用docker logs nacos来查找报错信息 docker logs nacos 看问题报错就是数据源问题,nacos没能连接上mysql 三、解决方案 第一步 docker restart mysql …

详细教程-Linux上安装单机版的Hadoop

1、上传Hadoop安装包至linux并解压 tar -zxvf hadoop-2.6.0-cdh5.15.2.tar.gz 安装包: 链接:https://pan.baidu.com/s/1u59OLTJctKmm9YVWr_F-Cg 提取码:0pfj 2、配置免密码登录 生成秘钥: ssh-keygen -t rsa -P 将秘钥写入认…

桌面怎么快速添加便签?适合桌面记事的便签小工具

在数字化时代,我们每天面对电脑处理大量任务,无论是工作计划、会议纪要还是个人生活琐事,都需要一个可靠的桌面记事工具来帮助我们记录和整理。因此,一款适合桌面使用的便签软件成为了我们不可或缺的助手。 敬业签就是这样一款功…

Django实现智能问答助手-基础配置

设置 Django 项目、创建应用、定义模型和视图、实现问答逻辑,并设计用户界面。下面是一步一步的简要说明: 目录: QnAAssistant/ # 项目目录 │ ├── QnAAssistant/ # 项目文件夹 │ ├── init.py # 空文件 │ ├── settings.py # 项目配…

Python的3D可视化库 - vedo (2)visual子模块 基本可视化行为

文章目录 1. visual模块的继承关系2. 基类CommonVisual的方法2.1 获取对象信息2.1.1 对象本身信息2.1.2 对象的查找表2.1.3 对象标量范围2.1.4 对象缩略图 2.2 呈现对象2.2.1 在窗口显示1.2.2 对象可见性 2.2.3 对象颜色2.2.4 对象透明度 2.3 添加标度条2.3.1 2D标度条2.3.2 3D…

Mysql案例之COALESCE函数使用详解

hello,大家好,我是灰小猿!最近在做一个三表关联查询的场景处理时,遇到了一个比较有用的MySQL函数,在这里记录一下,大概场景如下: 需求场景 场景:有一张object_rel表,表中…

机器学习—迁移学习:使用其他任务中的数据

对于一个没有那么多数据的应用程序,迁移学习是一种奇妙的技术,它允许你使用来自不同任务的数据来帮助你的应用程序,迁移学习是如何工作的? 以下是迁移学习的工作原理,假设你想识别手写的数字0到9,但是你没…

寻找用户推荐人(考点:ifnull)【SQL+Pandas】

今天尝试刷一下力扣的sql面试题&#xff0c;这个写法我也是第一次见 题目是 我们需要在这个表中查出referee_id&#xff01;2的 正确写法是 select name from customer where ifnull(referee_id,0) ! 2 -- 不等于还可以这么写&#xff1a;<>

【软件开发】如何理解异地多活?

本文转载自https://mp.weixin.qq.com/s/T6mMDdtTfBuIiEowCpqu6Q,对文章部分内容做二次修改。 文章目录 01 系统可用性02 单机架构03 主从副本04 风险不可控05 同城灾备06 同城双活07 两地三中心08 伪异地双活09 真正的异地双活10 如何实施异地双活11 异地多活总结在软件开发领…

探索PDFMiner:Python中的PDF解析利器

文章目录 **探索PDFMiner&#xff1a;Python中的PDF解析利器**1. 背景介绍&#xff1a;为何选择PDFMiner&#xff1f;2. PDFMiner是什么&#xff1f;3. 如何安装PDFMiner&#xff1f;4. 简单库函数使用方法4.1 提取文本4.2 获取页面布局信息4.3 提取表格数据4.4 提取图像 5. 应…

攻防世界Web-bug

打开链接 先注册一个账号 创建成功&#xff0c;会给一个UID5 抓包的user值就是UID:用户名的md5加密的编码 点击Manage时要求admin用户 利用改包把user改成admin 1:admin的md5值为4b9987ccafacb8d8fc08d22bbca797ba 还要把url上的UID改为1 存在逻辑漏洞&#xff0c;成功越权 …

LLM( Large Language Models)典型应用介绍 1 -ChatGPT Large language models

ChatGPT 是基于大型语言模型&#xff08;LLM&#xff09;的人工智能应用。 GPT 全称是Generative Pre-trained Transformer。-- 生成式预训练变换模型&#xff1a; Generative&#xff08;生成式&#xff09;&#xff1a;可以根据输入生成新的文本内容&#xff0c;例如回答问题…