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

4. STM32_定时器

概述

什么是定时器:

定时器核心就是计数器,是使用精准的时基,通过硬件的方式,实现定时功能的器件。

定时器的工作原理:

主频时钟CLK通过PSC进行分频后产生定时器时钟TIM CLK,计数器CNT根据TIM CLK的频率进行计数,当到达所计数的次数后,定时器产生溢出信号可以触发中断或事件,同时ARR将初始值重装载到CNT中,开启下一次的定时。 

定时器的类型:

STM32定时器分为常规定时器、专用定时器、内核定时器。其中常规定时器又分为基本定时器、通用定时器、高级定时器。各类定时器的关系如下:

三种常规定时器的区别:

常规定时器分为基本定时器、通用定时器、高级定时器,它们三个的功能是逐渐增强的关系。

  • 基本定时器:只能实现定时功能
  • 通用定时器:包含基本定时器的功能,并且具有多路独立通道,可用于输入捕获、输出比较
  • 高级定时器:包含通用定时器的功能,并且具有互补输出、刹车输入等电机控制功能。

基本定时器

基本定时器框图:

计数模式: 

计数模式有递增计数模式、递减计数模式、中心对齐计数模式。运行原理如下:

  • 递增计数模式

初始时,CNT = 0。之后CNT一直递增,直到CNT = ARR时溢出,CNT被重新设置为0。

  • 递减计数模式

初始时,CNT = ARR。之后CNT一直递减,直到CNT = 0时溢出,CNT被重新设置为ARR。

  • 中心对齐计数

初始时,CNT = 0。之后CNT一直递增,直到CNT = ARR - 1时溢出,CNT被设置为ARR。

之后CNT一直递减,直到CNT = 1时溢出,CNT被设置为0。之后递增重复以上操作。

对应的溢出条件及初始值总结如下:

计数模式溢出条件初始值
递增计数模式CNT = ARRCNT = 0
递减计数模式CNT = 0CNT = ARR
中心对齐计数模式

CNT = ARR -1

CNT = 1

初始/CNT=1溢出后CNT = 0

CNT=ARR-1溢出后CNT = ARR

各个计数模式的时序图分析:

分析下述时序图的PSC、ARR配置,以及计数模式。

分析:CK_PSC是输入到PSC中的时钟,CK_CNT是输入到CNT的时钟。从图中可以看到,2个CK_PSC产生1个CK_CNT,因此是2分频,PSC = 2-1 = 1。因为溢出信号是计数器上溢,所以是递增计数模式。递增计数模式溢出为ARR,从图中可以看到在CNT = 36时溢出,所以ARR = 36。

定时器溢出时间计算公式:

  • Tout:定时器的溢出时间,单位s
  • PSC:分频系数
  • ARR:溢出时的计数个数,在递增计数模式时,该值就是ARR寄存器中的值;在递减计数模式时,该值是初始化时的值;在中央对齐模式时,该值是ARR-1。
  • Ft:定时器的时钟源频率,就是框图中PSC_CK的值。单位Hz

http://www.lryc.cn/news/493977.html

相关文章:

  • Mysql 深度分页问题及优化方案
  • 前端性能优化技巧
  • taro使用createAsyncThunk报错ReferenceError: AbortController is not defined
  • Linux:systemd进程管理【1】
  • 【Maven】继承和聚合
  • 【线上问题记录 | 排查网络连接问题】
  • springboot车辆管理系统设计与实现(代码+数据库+LW)
  • 独家|京东调整职级序列体系
  • Arrays.copyOfRange(),System.arraycopy() 数组复制,数组扩容
  • Python学习37天
  • flask的第一个应用
  • 【论文格式】同步更新中
  • Java-GUI(登录界面示例)
  • 看华为,引入IPD的正确路径
  • 计算机毕业设计Spark+大模型知识图谱中药推荐系统 中药数据分析可视化大屏 中药爬虫 机器学习 中药预测系统 中药情感分析 大数据毕业设计
  • pcb线宽与电流
  • w~视觉~合集26
  • Qt支持RKMPP硬解的视频监控系统/性能卓越界面精美/实时性好延迟低/录像存储和回放/云台控制
  • 【Qt】图片绘制不清晰的问题
  • 2008年IMO几何预选题第3题
  • NAT拓展
  • Flink四大基石之State
  • Spacy小笔记:zh_core_web_trf、zh_core_web_lg、zh_core_web_md 和 zh_core_web_sm区别
  • 第六届智能控制、测量与信号处理国际学术会议 (ICMSP 2024)
  • docker服务容器化
  • 【QT】控件8
  • 漫谈推理谬误——错误因果
  • 【数据结构】队列实现剖析:掌握队列的底层实现
  • 【C++】IO库(二):文件输入输出
  • 105.【C语言】数据结构之二叉树求总节点和第K层节点的个数