MCU开发学习记录8 - 基本定时器学习与实践(HAL库) - 定时器DMA循环模式修改ARR值、定时器中断方式修改ARR值 - STM32CubeMX

名词解释:

TRGO:Trigger Out General Purpose Output
ARR:Auto-reload 
PSC:Prescaler
CNT:Counter
EGR:event generation register

        本文将介绍基本定时器的概念、相关函数以及STM32CubeMX生成定时器的配置函数以及对生成定时器的配置函数进行分析(包括结构体配置、相关寄存器配置)。

        最后针对于定时器实践:使用TIM6使能DMA请求时,使用DMA、中断两种方式修改定时器的ARR值,并且用逻辑分析查看结果。

0. F4系列定时器分类

  1. 最大接口时钟(Max interface clock (MHz))
    1. 定时器与系统内核(如MCU)之间的通信接口(如APB总线)支持的最高时钟频率。
    2. 它决定了定时器寄存器配置和状态读取的速度上限。例如,如果接口时钟为84 MHz,则对定时器寄存器的读写操作需基于该频率进行,不能超过此速率。
  2. 最大定时器时钟(Max timer clock (MHz))
    1. 定时器内部计数器(Counter)实际运行时的最高时钟频率。
    2. 它决定了定时器的计数速度,直接影响定时器的计时精度和输出信号的频率上限。例如,168 MHz的定时器时钟意味着计数器每秒最多递增168,000,000次。

        
        

1. 什么是基本定时器?

1.1 基本定时器概念

1.1.1 基本定时器功能

        STM32F4系列的基本定时器为TIM6和TIM7。基本定时器包括16 位自动重载递增计数器16 位可编程预分频器,预分频系数 1~65536,用于对计数器时钟频率进行分频,还可以(TRGO)触发 DAC 的同步电路,以及生成中断/DMA 请求

1.1.2 基本定时器框图

        

  1. 时钟来源 - APB1
    参考第0章第二个图片,其时钟内部计数频率为84Mhz。
  2. TIM控制器
    复位、使能、计数与TRGO(通用触发输出)DAC。
  3. 时基单元
    · 预分频器寄存器 (TIMx_PSC) - 具有影子寄存器
    · 计数器寄存器 (TIMx_CNT)
    · 自动重载寄存器 (TIMx_ARR)- 具有影子寄存器
  4. 影子寄存器:
    · 发生更新事件时,根据控制位传输到活动寄存器(实际执行的寄存器)的预装载寄存器
    · U event:更新事件 UEV

1.2 基本定时器具体说明

1.2.1 基本定时器-时基单元

        定时器的主要模块由一个16位递增计数器及其相关的自动重载寄存器组成。计数器的时钟可通过预分频器进行分频。

· TIMx_CR1.ARPE(自动重载预装载使能位)
        0:TIMx_ARR 寄存器不进行缓冲;1:TIMx_ARR 寄存器进行缓冲。
· TIMx_CR1.UDIS(更新禁止 (Update disable)):用以使能/禁止 UEV 事件生成。
  
      0:使能 UEV;1:禁止 UEV。
· TIMx_CR1.CEN(计数器使能 (Counter enable))
    
    0:禁止计数器;1:使能计数器
· TIMx_PSC(预分频寄存器)
       
[15:0]:预分频器值 (Prescaler value)

· 定时器计算器频率与定时器时钟的关系: f_{CK\_CNT}=\frac{f_{CK\_PSC}}{PSC\left [ 15:0 \right ] +1}
· TIMx__CR1.URS(更新请求源 (Update request source))
        
0:使能时,所有以下事件(硬、软件生成更新事件、从模式
控制器接收外部触发信号产生的更新事件​(基本定时器没有主从模式))都会生成更新中断或 DMA 请求。
        1:使能时,只有计数器上溢/下溢会生成更新中断或 DMA 请求。
· TIMx_EGR.UG(更新生成 (Update generation)):软件强制产生更新事件
       
 0:不执行任何操作;1:重新初始化定时器计数器并生成寄存器更新事件

1. PSC=1 -> PSC=4;使能自动重装载寄存器

        

2. PSC=2,ARR=36
        

3. UG=1时,CK_CNT变化
        CNT_INIT:
用于强制复位计数器并更新相关寄存器值​(如预分频器 Prescaler、自动重载寄存器 ARR 等)。
        

1.2.2 基本定时器-两种更新事件

1. 软件更新事件

        将 TIMx_EGR 寄存器的位UG置 1,产生更新事件后,硬件会自动将UG位清零。

2. 软件更新事件

        每来一个CK_CNT脉冲,TIMx_CNT的值就会递增加1。当 TIMx_CNT 值 与 TIMx_ARR 的设定值相等时,TIMx_CNT 的值就会被自动清零并且会生成更新事件。

1.2.3 基本定时器-调试模式

        当微控制器进入调试模式时(Cortex™-M4F 内核停止),TIMx计数器会根据DBG模块中 的DBG_TIMx_STOP配置位选择继续正常工作或者停止工作。
        

2. 基于HAL库配置基本定时器外设

2.1 CubeMX配置基本定时器外设

2.1.1 基本定时器6参数初始化

         

2.1.2 使能定时器6-DMA通道(TIM_UPdate为DMA请求信号)

        HAL库HAL_TIM_Base_Start_DMA设计DMA的外设地址是TIM6-ARR。
        注意:要使能DMA的循环传输模式(单次传输模式需要再DMA中断里面再次添加HAL_TIM_Base_Start_DMA(且单词传输模式下,HAL_TIM_Base_Start_DMA使能定时器只执行一个周期就不在运行))

        

        

2.1.3 定时器6-相关中断

         

2.2 基本定时器外设初始化流程

        

        

        

                
        
        

        

2.3 基本定时器寄存器基地址

        

2.4 基本定时器寄存器

        

2.5 基本定时器相关函数汇总


3. 基本定时器实践

3.1 利用TIM6中断方式修改TIM6的ARR值

  1. main函数
  2. 中断回调函数

 3.2 利用TIM6-DMA方式修改TIM6的ARR值

  1. main函数
  2. 中断回调函数

3.3 实践结果

        通过LED反转查看定时器的ARR值
        每次ARR加1000(0.1s)

        

4. 本文的工程文件下载链接

工程Github下载链接:https://github.com/chipdynkid/MCU-DL-STM32
(国内)工程Gitcode下载链接https://gitcode.com/chipdynkid/MCU-DL-STM32

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

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

相关文章

考研系列-计算机网络冲刺考点汇总(上)

写在前面 本文将总结王道408考研课程的计算机网络冲刺考点的第一章到第三章内容(计算机网络体系结构、物理层、数据链路层)。【图片较多,加载需要时间,可以提前打开加载~~】 第一章、计算机网络体系结构 注意:PCI(头部…

设计模式每日硬核训练 Day 14:组合模式(Composite Pattern)完整讲解与实战应用

🔄 回顾 Day 13:桥接模式小结 在 Day 13 中,我们学习了桥接模式(Bridge Pattern): 用于将“抽象”与“实现”分离,适用于双维度变化场景(如图形类型 渲染方式)。它强调…

讯联桌面TV版apk下载-讯联桌面安卓电视版免费下载安装教程

在智能电视的使用过程中,一款好用的桌面应用能极大提升我们的使用体验。讯联桌面 TV 版就是这样一款备受关注的应用,它可以让安卓电视拥有更个性化、便捷的操作界面。今天,就为大家详细介绍讯联桌面 TV 版 apk 的免费下载安装教程。 一、下载…

Nginx知识点

Nginx发展历史 Nginx 是由俄罗斯程序员 Igor Sysoev 开发的高性能开源 Web 服务器、反向代理服务器和负载均衡器 ,其历史如下: 起源与早期开发(2002 - 2004 年) 2002 年,当时 Igor Sysoev 在为俄罗斯门户网站 Rambl…

uview1.0 tabs组件放到u-popup中在微信小程序中滑块样式错乱

解决思路 重新计算布局信息&#xff1a;在弹窗显示后重新调用 init 方法来计算组件的布局信息。使用 nextTick&#xff1a;保证在视图更新之后再进行布局信息的计算。 <u-tabs ref"tabsRef" ></u-tabs> makeClick(){this.makeShowtruethis.$nextTick…

腾讯一面-软件开发实习-PC客户端开发方向

1.自我介绍就不多赘述了 2. 请介绍一下你的项目经历 - 介绍了专辑鉴赏项目&#xff0c;前端使用html语言编写&#xff0c;后端基于http协议使用C语言进行网页开发。此外&#xff0c;还提及项目中涉及处理多线程问题以及做过内存池管理项目。 3. 项目中HTTP协议是使用库实现的…

[数据可视化] Datagear使用心得:从数据整备到可视化联动实践

Datagear 是一款功能强大的数据可视化与报表工具&#xff0c;在日常数据分析与展示过程中&#xff0c;能有效帮助用户构建交互式报表与面板。本文结合实际使用场景&#xff0c;总结了在 Datagear 平台上关于元数据整备、Board 面板设计、图表嵌入等方面的使用经验&#xff0c;供…

【音视频】MP4解封装

一、概述 实现了读取mp4文件&#xff0c;提取出h264和aac文件&#xff0c;可以直接播放 二、实现过程 准备文件 在build路径下添加mp4文件 同时&#xff0c;添加main函数参数&#xff0c;表示输入文件和输出文件 打开文件 打开输入文件&#xff0c;初始化格式上下文 char…

idea2024.1双击快捷方式打不开

idea2024.1突然双击快捷方式打不开&#xff0c;使用管理员运行也打不开 在安装的idea路径下的bin目录下双击打开idea.bat文件&#xff0c;要是打不开使用txt格式打开&#xff0c;打开后在最后一行加上pause&#xff0c;之后保存。 看看报错信息是不是有一个initializedExcept…

【错误记录】Windows 命令行程序循环暂停问题分析 ( 设置 “ 命令记录 “ 选项 | 启用 “ 丢弃旧的副本 “ 选项 | 将日志重定向到文件 )

文章目录 一、报错信息二、问题分析1、Windows 命令行的缓冲区机制2、命令记录设置 三、解决方案1、设置 " 命令记录 " 选项2、将日志重定向到文件 一、报错信息 Java 程序中 , 设置 无限循环 , 每次循环 休眠 10 秒后 , 再执行程序逻辑 , 在命令行中打印日志信息 ; …

STM32H5开发陀螺仪LSM6DSV16X(1)----轮询获取陀螺仪数据

STM32H5开发陀螺仪LSM6DSV16X.1--轮询获取陀螺仪数据 概述视频教学样品申请源码下载硬件准备参考程序通信模式管脚定义IIC通信模式速率新建工程工程模板保存工程路径芯片配置工程模板选择时钟设置UART配置UART属性配置设置e2studio堆栈e2studio的重定向printf设置R_SCI_UART_Op…

Android端使用无障碍服务实现远程、自动刷短视频

最近在做一个基于无障碍自动刷短视频的APP&#xff0c;需要支持用任意蓝牙遥控器远程控制&#xff0c; 把无障碍服务流程大致研究了一下&#xff0c;从下面3个部分做一下小结。 1、需要可调整自动上滑距离和速度以适配不同的屏幕和应用 智能适配99%机型&#xff0c;滑动参数可…

Spark和Hadoop的区别和联系

Hadoop 和 Spark 的区别 1. 架构 Hadoop&#xff1a;基于 HDFS&#xff08;分布式文件系统&#xff09;和 MapReduce&#xff08;分布式计算框架&#xff09;。HDFS 负责数据的分布式存储&#xff0c;而 MapReduce 是其主要的计算框架&#xff0c;通过 Map 和 Reduce 任务进行…

【版本控制】idea中使用git

大家好&#xff0c;我是jstart千语。接下来继续对git的内容进行讲解。也是在开发中最常使用&#xff0c;最重要的部分&#xff0c;在idea中操作git。目录在右侧哦。 如果需要git命令的详解&#xff1a; 【版本控制】git命令使用大全-CSDN博客 一、配置git 要先关闭项目&#xf…

论文阅读:2023 arxiv A Survey of Reinforcement Learning from Human Feedback

A Survey of Reinforcement Learning from Human Feedback https://arxiv.org/pdf/2312.14925 https://www.doubao.com/chat/3506943124865538 速览 这篇论文是关于“从人类反馈中进行强化学习&#xff08;RLHF&#xff09;”的综述&#xff0c;核心是讲如何让AI通过人类反…

单片机 + 图像处理芯片 + TFT彩屏 进度条控件

进度条控件使用说明 概述 本进度条控件基于单片机 RA8889/RA6809 TFT开发&#xff0c;提供了简单易用的进度显示功能。控件支持多个进度条同时显示、自定义颜色、边框和标签等特性&#xff0c;适用于需要直观显示进度信息的各类应用场景。 特性 支持多个进度条同时显示可…

数据处理: OPTICS聚类及Python实现

1. 基本原理 OPTICS&#xff08;Ordering Points To Identify the Clustering Structure&#xff09;是一种基于密度的聚类算法&#xff0c;可视为DBSCAN的改进版本。它能够识别不同密度的簇&#xff0c;并自动发现数据中的层次化聚类结构&#xff0c;适用于复杂分布的数据集…

PyCharm 在 Linux 上的完整安装与使用指南

PyCharm 在 Linux 上的完整安装与使用指南—目录 一、PyCharm 简介二、下载与安装1. 下载 PyCharm2. 安装前的依赖准备3. 安装步骤方法 1&#xff1a;通过 Snap 安装&#xff08;推荐&#xff09;方法 2&#xff1a;手动安装&#xff08;从官网下载 .tar.gz 文件&#xff09;方…

【React】路由器 React-Router

安装路由模式路由组件和属性 (Link、NavLink、Outlet、Routes、Navigate、element)路由传参 ( Hook&#xff1a;useParams 、useSearchParams )路由跳转&#xff08;Hook&#xff1a;useNavigate&#xff09;路由的构建 前端路由指的是一种将浏览器URL与特定页面或视图关联起来…

Flowable7.x学习笔记(十)分页查询已部署 BPMN XML 流程

前言 上一篇文章我们已经完成了流程的部署功能&#xff0c;那么下一步就是要激活流程了&#xff0c;但是我们要需要明确的指定具体要激活部署后的哪一条流程&#xff0c;所以我们先把已部署的基础信息以及具体定义信息分页查询出来&#xff0c;本文先把基础代码生成以及完成分页…