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

嵌入式学习笔记 - STM32定时器的输入通道与时钟源

以上为通用定时器内部结构框图,可以看到同一个定时器外部输入口信号经过滤波之后可以得到两个信号,以TI1为例,可以产生TI1FP1 与TI1FP2信号,前者用于通道1,后者用于通道2,这个机制对于采集同一个信号的不同特性至关重要,例如采集PWM波的周期跟占空比,理解这一点更容易对于捕获比较部分的掌握与理解。

一 内部时钟源(CK_INT)

内部时钟源顾名思义就是使用MCU内部自己的定时器时钟,CK_INT=APB1或者APB2 CLK,所以不是外接时钟,就不可能是从模式,只能是主模式,见下图从模式寄存器的SMS位必须设置位000关闭从模式,一般是工作在计数模式,或者PWM输出模式

如果禁止了从模式控制器(TIMx_SMCR寄存器的SMS=000),则CEN、DIR(TIMx_CR1寄存器) 和UG位(TIMx_EGR寄存器)是事实上的控制位,这也是仅主模式的设置方式

二 外部时钟源模式1

设置完毕后,当上升沿出现在TI2,计数器计数一次,且TIF标志被设置,也就是说TI2输入时钟最终充当了定时器计数器时钟。以下是cubeMX配置

关于STM32定时器的外部时钟模式1未使用内部时钟CK_INT的原因与其工作原理和时钟源选择机制直接相关,具体分析如下:

1. ‌外部时钟模式1的设计定位
  • 外部时钟模式1的核心功能是‌通过外部引脚信号驱动计数器‌,而非依赖内部时钟信号23。该模式下,定时器通过输入通道TI1(CH1引脚)或TI2(CH2引脚)接收外部触发信号,经过滤波和极性选择后生成有效触发边沿,最终控制计数器递增34。
  • 模式切换的互斥性‌:定时器的时钟源选择具有排他性。当配置为外部时钟模式1时,硬件逻辑会自动屏蔽内部时钟信号CK_INT,确保计数器完全由外部触发信号驱动26。
2. ‌从模式控制器的关键作用
  • 在外部时钟模式1中,定时器的‌从模式控制器(Slave Mode Controller)‌被激活,并将外部触发信号作为计数器时钟源23。此时:
    • 计数器的工作状态(启动/停止)直接受外部信号触发边沿控制;
    • 内部时钟CK_INT的预分频器(PSC)和自动重载寄存器(ARR)仍然参与分频和周期设定26,但CK_INT自身不再直接驱动计数器。
3. ‌与内部时钟模式的对比
  • 内部时钟模式(CK_INT)‌:计数器由内部时钟分频后的CK_CNT驱动,适用于定时器自主运行场景68。
  • 外部时钟模式1‌:适用于需要‌外部事件同步计数‌的场景(如测量外部脉冲频率)。此时外部信号既是时钟源也是触发源,与内部时钟无关34。
4. ‌硬件架构的限制
  • STM32定时器的时钟路径设计决定了不同模式间的隔离性。外部时钟模式1的触发信号通过专用输入通道进入定时器模块,而内部时钟CK_INT由总线时钟分频产生。两者在硬件层面上存在独立路径,无法同时作用于计数器26。

三 外部时钟源模式2

此模式下计数器能够在外部触发ETR的每一个上升沿或下降沿计数。下图示例计数器在每2个ETR上升沿计数一次,因为设置了输入信号2倍预分频。

可以按照外部时钟模式一进行配置cubeMX,从上图121以及下图cubeMX配置图中也可以发现,模式2比模式1多了两处,①对外部触发信号的分频,下图绿线部分所示,②对内部时钟的分频用于采样外部信号,下图黄线部分所示,可根据需要进行配置

注意:外部时钟模式2有两种设置方式,见下图:

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

相关文章:

  • Rust 学习笔记:关于 HashMap 的练习题
  • Flink 的任务槽和槽共享
  • c++从入门到精通(五)--异常处理,命名空间,多继承与虚继承
  • 第一次经历项目上线
  • HarmonyOS NEXT~鸿蒙应用上架指南:HarmonyOS应用发布全流程解析
  • 大型语言模型中的QKV与多头注意力机制解析
  • 前端面经12 函数柯里化
  • redisson分布式锁实现原理归纳总结
  • 注册表设置windows背景护眼色
  • 机器学习,深度学习,神经网络,深度神经网络之间有何区别?
  • 【Linux网络】DNS与ICMP
  • vue使用Pinia实现不同页面共享token
  • OAuth2.0
  • ai agent(智能体)开发 python高级应用6:用crawl4ai0.6.3抓取分类 形成每日简报
  • 洛谷 全排列问题
  • 【从设置到上传的全过程】本地多个hexo博客,怎么设置ssh才不会互相影响
  • 星火杯大模型应用创新赛学习笔记——datawhale
  • ArrayList-集合使用
  • AGI大模型(20):混合检索之rank_bm25库来实现词法搜索
  • LVGL- 圆弧形状控件
  • 制作大风车动画
  • 【高斯拟合最终篇】Levenberg-Marquardt(LM)算法
  • Vue Router——路由基础详解(二)
  • Datawhale PyPOTS时间序列5月第3次笔记
  • Python实例题:Python百行制作登陆系统
  • Java中synchronized 关键字
  • Spring MVC 如何处理文件上传? 需要哪些配置和依赖?如何在 Controller 中接收上传的文件 (MultipartFile)?
  • Selenium无法定位元素的几种解决方案详解
  • AgentCPM-GUI,清华联合面壁智能开源的端侧GUI智能体模型
  • 远程主机状态监控-GPU服务器状态监控-深度学习服务器状态监控