STM32F334timer6-7

STM32F334timer6-7

  • 概况
  • 预分频器描述
  • 计数模式
  • 时钟

概况

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

时基单元可编程计时器的主要模块是一个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给出了当预分频器比率动态变化时计数器行为的一些示例。
STM32F334timer6-7_第2张图片
STM32F334timer6-7_第3张图片

计数模式

计数器从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时,不同时钟频率的计数器行为的一些示例。
STM32F334timer6-7_第4张图片
ARPE自动重新加载预加载启用
0:TIMx_ARR寄存器无缓冲。
1: TIMx_ARR寄存器有缓冲
STM32F334timer6-7_第5张图片
STM32F334timer6-7_第6张图片
UIF位重新映射
TIMx_CR1寄存器中的IUFREMAP位强制将更新中断标志UIF连续复制到计时器计数器寄存器的位31(TIMxCNT[31])。这允许原子地读取计数器值和由UIFCPY标志发出的潜在翻转条件。在特定情况下,它可以通过避免例如由后台任务(计数器读取)和中断(更新中断)之间共享的处理导致的竞争条件来简化计算。
UIF和UIFCPY标志的断言之间没有延迟。

时钟

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

你可能感兴趣的:(精通定时器,stm32,单片机,嵌入式硬件)