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

STM32 基础知识 定时器【概念】

定时器

        定时器就是 计数器

定时器总体分为三类:基本定时器,通用定时器,高级定时器。

框图

 框图主要分为四部分:①时钟产生器部分  ②时基单元  ③ 输入捕获部分  ④ 输出比较部分

TIM功能描述

时基单元

        一般来说 时基单元有三部分构成:预分频器(PSC)、计数器(CNT)、和自动重装载寄存器(ARR)重复次数计数器只存在于高级定时器

其中 预分频器和自动重装载寄存器是有影子计数器存在的,当我们修改完预分频器和自动重装载寄存器后,并不会立即进行改变,而是在产生更新中断时,才会写入到影子寄存器中,影子寄存器才是实际起作用的寄存器。

还需要注意:UEV 为更新事件,UIF(Updata Interrupt Flag)为更新中断标志,UIE(Updata Interrupt Enable)为更新中断使能

         产生更新事件后,UIF会置1

预分频器:

        是一个16为的寄存器,对输入时钟进行分频,可以在运行过程中改变他的数值,在下一次产生更新事件时起作用。

计数器:

        计数器从0累加到自动重装载寄存器的值后,然后重新从0开始计数并产生一个更新事件

自动重装载寄存器:

        固定值,用来比较CNT与ARR值的关系,

        ARR也存在影子寄存器,与PSC不同的是:可以通过寄存器来开关影子寄存器

重复计数器(TIM1、TIM8):

        大概就是计数器溢出的次数,当没有重复计数器时,计数器溢出会直接产生更新中断,有了重复计数器后,当计数器溢出的次数等于重复计数器后才会产生更新中断

计数器模式:

        向上计数模式、向下技术模式、中央对齐模式

向上计数模式:

        计数器从0计数到自动重装载寄存器的值后,重新从0开始计数并产生一个更新事件

向下计数模式:

        计数器从自动重装载寄存器的值开始向下计数到0,然后从自动重装载的值重新开始并产生一个更新事件

中央对齐模式:

        计数器从0开始计数到ARR-1时,产生一个计数器溢出事件,然后开始向下计数,当计数到1时,产生一个计数器下溢出事件,然后从0开始计数。

时钟产生器

        分为时钟源选择和控制器 

控制器

        ① 触发控制器(主模式)  ②从模式控制器 ③  编码器控制 

时钟源:

主要来源于四部分: 

1) 内部时钟(CK_INT)

2) 外部时钟模式1

         TI1_ED、TI1FP1、TI2FP2

        TI1_ED:定时器的边沿检测

        TI1FP1:Timer Input 1 Filtered polarity 定时器1的输入 经过滤波和极性选择后

3)外部时钟模式2 

         TIMx_SMCR ETP: 外部触发极性,0 高电平或上升沿有效,1 低电平或下降沿有效

        TIMx_SMCR ETPS[1:0]: 外部触发分频,00 关闭,01 ETRF/2 ,10 ETRF/4,11 ETRF/8

        TIMx_SMCR ETF[3:0]:外部触发滤波

4)ITRx 内部触发输入   

    来自其他定时器的输出,用于级联 

http://www.xdnf.cn/news/16062.html

相关文章:

  • Go语言实现DNS解析与域名服务:从基础到生产实践
  • SOLIDWORKS2025教育版集成了电气与自动化设计功能
  • 内存飙升但无 OOM?用 eBPF 捕获隐性内存泄漏事件
  • 7.23总结设备虚拟化技术
  • 统一服务入口——Spring Cloud Gateway
  • Unreal5从入门到精通之使用 Python 编写虚幻编辑器脚本
  • 旧手机部署轻量级服务器
  • 什么是MySQL 视图
  • MySQL binlog解析
  • 2.1 为什么定义tensor数据结构?
  • 前端面试专栏-工程化:29.微前端架构设计与实践
  • [Semantic Seg][KD]FreeKD: Knowledge Distillation via Semantic Frequency Prompt
  • Elasticsearch是什么?
  • SQL语句中锁的使用与优化
  • 计算机底层入门 05 汇编学习环境通用寄存器内存
  • 【菜狗处理脏数据】对很多个不同时间序列数据的文件聚类—20250722
  • PyTorch常用工具
  • c++day05(ASCII)
  • 【RK3576】【Android14】MIC开发调试
  • ES--为什么没有完全删除?
  • 【科研绘图系列】R语言绘制柱状堆积图
  • 程序是如何生成的-以c语言为例
  • 阶段1--Linux中的文件服务器(FTP、NAS、SSH)
  • 从零构建实时通信引擎:Freeswitch源码编译与深度优化指南
  • Socket套接字
  • 【React-Three-Fiber实践】放弃Shader!用顶点颜色实现高性能3D可视化
  • 项目复盘核心要点
  • ndarray的创建(小白五分钟从入门到精通)
  • 引擎动画系统设计
  • Google Gemini 体验