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

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

实验目的和要求

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脉冲的场合,还具有编码器的接口。每个定时器都是完全独立的,没有互相共享任何资源。它们可以一起同步操作。


http://www.kler.cn/a/404867.html

相关文章:

  • 蓝桥杯每日真题 - 第17天
  • 2024年亚太数学建模竞赛问题C宠物产业及相关产业发展分析与对策
  • Cesium 加载B3DM模型
  • NLP论文速读(多伦多大学)|利用人类偏好校准来调整机器翻译的元指标
  • python成长技能之正则表达式
  • cocos creator 3.8 一些简单的操作技巧,材质的创建 1
  • MFC工控项目实例三十一模拟量转化为工程量
  • Spring 与 Spring MVC 与 Spring Boot三者之间的区别与联系
  • 从 IDC 到云原生:稳定性提升 100%,成本下降 50%,热联集团的数字化转型与未来展望
  • 【MQTT.fx 客户端接入 阿里云平台信息配置】
  • 湘潭大学软件工程算法设计与分析考试复习笔记(二)
  • 【FFmpeg】FFmpeg 内存结构 ③ ( AVPacket 函数简介 | av_packet_ref 函数 | av_packet_clone 函数 )
  • 【Unity】网格系统:物体使用网格坐标定位
  • ceph 18.2.4二次开发,docker镜像制作
  • 【保姆级图文教程】QT下载、安装、入门、配置VS Qt环境
  • C++20 协程入门
  • QT+osg+osgearth显示一个地球(进阶)
  • 《Java核心技术 卷I》链表
  • 多目标优化算法:多目标吸血水蛭优化算法(MOBSLO)求解DTLZ1-DTLZ9,提供完整MATLAB代码
  • 集合卡尔曼滤波(Ensemble Kalman Filter),用于二维滤波(模拟平面上的目标跟踪),MATLAB代码
  • 机器学习——数据隐私与安全学习
  • 排序算法:直接插入排序,希尔排序,选择排序,快速排序,堆排序,归并排序
  • 【IEEE独立出版 |往届均已成功检索】第八届大数据与应用统计国际学术研讨会(ISBDAS 2025)
  • C#核心(10)拓展方法
  • 机器学习:智能技术的未来
  • Vue_Router权限控制:不同角色显示不同路由