• STM32F334timer6-7


    概况

    基本计时器(TIM6/TIM7)功能包括:
    •16位自动重新加载递增计数器
    •16位可编程预分频器,用于将计数器时钟频率除以1和65535之间的任何因子(也可“动态”)
    •同步电路,用于触发DAC
    •更新事件时的中断/DMA生成:计数器溢出
    在这里插入图片描述

    时基单元可编程计时器的主要模块是一个16位递增计数器及其相关的自动重新加载寄存器。计数器时钟可以被预分频器分频。
    计数器、自动重新加载寄存器和预分频器寄存器可以由软件写入或读取。即使计数器正在运行,也是如此。
    时基单元包括:•计数器寄存器(TIMx_CNT)•预分频器寄存器(TIMx.PSC)•自动重新加载寄存器(TIMx-ARR)自动重新加载的寄存器是预加载的。每次尝试写入或读取自动重新加载寄存器时,都会访问预加载寄存器。根据TIMx_CR1寄存器中的自动重新加载预加载启用位(ARPE),预加载寄存器的内容被永久地或在每次更新事件UEV时转移到影子寄存器中。当计数器达到溢出值时,如果TIMx_CR1寄存器中的UDIS位等于0,则发送更新事件。它也可以由软件生成。针对每个配置详细描述了更新事件的生成。
    计数器由预分频器输出CK_CNT计时,仅当TIMx_CR1寄存器中的计数器启用位(CEN)被设置时才启用。
    注意,实际计数器使能信号CNT_EN在CEN之后被设置为1个时钟周期。

    预分频器描述

    预分频器可以将计数器时钟频率除以1到65536之间的任何因子,他基于通过16位寄存器(在TIMx_PSC寄存器中)控制的16位计数器。
    当TIMx_PSC控制寄存器被缓冲时,它可以被动态改变。在下一次更新事件中考虑新的预分频器比率。
    图311和图312给出了当预分频器比率动态变化时计数器行为的一些示例。
    在这里插入图片描述
    在这里插入图片描述

    计数模式

    计数器从0计数到自动重新加载值(TIMx_ARR寄存器的内容),然后从0重新启动并生成计数器溢出事件。
    可以在每次计数器溢出时或通过设置TIMx_EGR寄存器中的UG位(通过软件或使用从模式控制器)生成更新事件。
    通过设置TIMx_CR1寄存器中的UDIS位(UDIS:更新禁用),软件可以禁用UEV事件(更新事件)。这避免了在将新值写入预加载寄存器时更新影子寄存器。这样,直到UDIS位被写入0,才发生更新事件,然而,计数器和预缩放计数器都从0重新启动(但预缩放率不变)。此外,如果TIMx_CR1寄存器中的URS(该位由软件设置并清除,以选择UEV事件源。如果启用,会生成更新中断或DMA请求)位被设置,则设置UG位会生成更新事件UEV,但未设置UIF标志(因此不会发送中断或DMA请求)。
    当发生更新事件时,更新所有寄存器,并设置更新标志(TIMx_SR寄存器中的UIF位)(取决于URS位):
    •预分频器的缓冲区重新加载了预加载值(TIMx_PSC包含在每个更新事件时要加载到活动预分频器寄存器中的值。)
    •自动重新加载阴影寄存器使用预加载值更新(TIMx_ARRARR是要加载到实际自动重新加载寄存器中的值。)。
    下图显示了当TIMx_ARR=0x36时,不同时钟频率的计数器行为的一些示例。
    在这里插入图片描述
    ARPE自动重新加载预加载启用
    0:TIMx_ARR寄存器无缓冲。
    1: TIMx_ARR寄存器有缓冲
    在这里插入图片描述
    在这里插入图片描述
    UIF位重新映射
    TIMx_CR1寄存器中的IUFREMAP位强制将更新中断标志UIF连续复制到计时器计数器寄存器的位31(TIMxCNT[31])。这允许原子地读取计数器值和由UIFCPY标志发出的潜在翻转条件。在特定情况下,它可以通过避免例如由后台任务(计数器读取)和中断(更新中断)之间共享的处理导致的竞争条件来简化计算。
    UIF和UIFCPY标志的断言之间没有延迟。

    时钟

    计数器时钟由内部时钟(CK_INT)源提供。
    CEN(在TIMx_CR1寄存器中)和UG位(在TIMx_EGR寄存器中)是实际控制位,只能通过软件进行更改(UG保持自动清除除外)。一旦CEN位被写入1,预分频器就由内部时钟CK_INT计时。
    在这里插入图片描述

  • 相关阅读:
    算法通关村第19关【白银】| 动态规划高频问题
    SpringBoot整合Mongodb
    二叉树进阶
    Java多线程编程
    基于Matlab使用 IMU、磁力计和高度计估计方向和高度(附源码)
    【源码分析】Spring的循环依赖(setter注入、构造器注入、多例、AOP)
    vue3-vant4-vite-pinia-axios-less学习日记
    如何用Redis实现事物以及锁?
    通过 Wireshark 解密 Kerberos 票据
    View基础知识-位置大小和滑动
  • 原文地址:https://blog.csdn.net/weixin_42914004/article/details/127941951