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

STM32——HAL库开发笔记20(定时器1—时基单元)(参考来源:b站铁头山羊)

一、定义

单片机中的定时器(Timer)是一a个非常重要的外设模块,用于生成精确的时间延迟、测量时间间隔、产生PWM信号等。定时器的核心是一个计数器,它通过对时钟信号进行计数来实现时间相关的功能。

时钟树为定时器提供时钟信号,定时器再执行相关的操作。

定时器的内部结构框图

二、时基单元

2.1 时钟来源

时钟来源有三种:RCC、TRIG、ETRF

我们本次只需要了解来自RCC的时钟来源,如图

APB的分频系数等于1 ,那么倍频系数就是1,若>1,倍频系数就是2。

举个例子,如下图:

2.2 预分频器(PSC)

用来降低输入时钟的频率,预分频器的分频系数 = PSC + 1。PSC∈(0,65535)

例如:

2.3 计数器CNT

对左侧输入的脉冲进行计数。CNT可+1/-1;CNT∈(0,65535)

CNT到底+1还是-1,取决于我们所选择的计数方向。计数方向如下

2.4 重复计数器

作用是设置重复计数的次数,重复计数的次数 = RCR+1。RCR∈(0,65535)

2.5 自动重装系统ARR

定时器模块中的自动重装载寄存器。这个功能主要用于定时器的自动重装载操作,使得定时器在达到设定值后能够自动重新开始计数,而不需要手动干预。

以手表计数5圈响铃一次为例展示全流程,如图

三、补充知识

RCR为什么是虚线?

 

对我们的STM32F103C8T6来说,只有四种定时器,TIM1~TIM4。其中TIM1为高级定时器。

虚线的原因是:只有高级定时器才有RCR

四、寄存器预加载

预加载就是一种缓存机制。当我们向寄存器写值的时候,这个值首先会进入影子寄存器,等到某个事件发生的时候,影子寄存器里面的值才会进入活动寄存器。这个时候我们写入的值才会生效。

预加载是为了安全,防止定时器跑飞。自动重装寄存器(ARR)、预分频器(PSC)、重复计数器(RCR)有预加载。其中PSC和RCR的预加载是强制开启的,关不掉。ARR的预加载是可以手动开关的,而且默认是关闭状态,通常需要手动使能ARR的预加载。


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

相关文章:

  • --- jvm中一个类的一生 ---
  • 2.10 Playground Chat提示工程实战:从交互调试到企业级应用的全链路指南
  • 如何在Spring Boot中使用Profiles实现环境隔离
  • 51单片机-数码管
  • tomcat 使用域名访问失败
  • 硅基流动+OfficeAI:开启WPS智能办公新时代
  • 在项目中操作 MySQL
  • 基于GFF3文件提取基因的位置信息
  • 人工智能之姿态估计OpenPose算法源码分析(vgg19,backbone,高斯热度图,单位向量叉乘,向量累加和后求平均,感受野,多个stage纠错)
  • 在分布式场景下可以使用synchronized加锁么?
  • tcp/ip协议设置参数,tcp/ip协议6设置
  • Maven 构建优化技巧
  • 计算机Java毕业设计汇总+持续更新~
  • LabVIEW 用户界面设计基础原则
  • 关于Activity的六个常用控件和ListView控件的详情
  • 什么是AI Agent的身份安全问题
  • 137,【4】 buuctf web [SCTF2019]Flag Shop
  • MYSQL下载安装及使用
  • HCIA-Datacom笔记3:网络工程
  • c# 2025/2/14 周五