stm32f334定时器配置详细解释

  • HTIMER1时钟及频率配置
  • 定时器设定配置
  • Half Mode模式(半占空比模式)
  • 同步sync
  • 加载启用Preload enabled
  • 影子寄存器的作用:
  • update geting
  • Repetition Update
  • Burst mode
  • push pull
  • dead time insertion
  • delay portection mode


HTIMER1时钟及频率配置

lua定时器功能 定时器设置说明_arm


lua定时器功能 定时器设置说明_stm32_02


STM32F334有一个高级定时器,简单来说就是stm32F3最高时钟72M,而高级定时器的外设可以倍频,将时钟以及定时器的分辨率提高。这里时钟频率设定为128M,倍频16倍,时钟为2048M,然后分频10240,最后输出PWM频率为200KHz。

定时器设定配置

lua定时器功能 定时器设置说明_单片机_03

Half Mode模式(半占空比模式)

硬件基于给定的计数周期值自动输出占空比为50%的方波,我们无须对比较寄存器的值再进行设置,默认使用比较寄存器cmp1,硬件自动将用户设置的分频值的一半赋给CMP1寄存器。换言之,用户此时无法对CMP1寄存器进行赋值。

同步sync

将一个定时器用作另一个定时器的预分频器
门控模式
触发模式
同步出发两个定时器
可以看看 DAC同步:就是在一个周期内触发DAC更新数据。

加载启用Preload enabled

lua定时器功能 定时器设置说明_寄存器_04

首先了解一下影子寄存器,图中有这样一句话

lua定时器功能 定时器设置说明_stm32_05


寄存器表示具有预加载的寄存器,这表示物理上这个寄存器对应2个寄存器:一个是我们可以可以写入或读出的寄存器,称为预装载寄存器,另一个是我们看不见的、无法真正对其读写操作的,但在使用中真正起作用的寄存器,称为影子寄存器。预装寄存器是我们可以操作的寄存器。

影子寄存器的作用:

设计预装载寄存器和影子寄存器的好处是,所有真正需要起作用的寄存器(影子寄存器)可以在同一个时间(发生更新事件时)被更新为所对应的预装载寄存器的内容,这样可以保证多个通道的操作能够准确地同步。如果没有影子寄存器,软件更新预装载寄存器时,则同时更新了真正操作的寄存器,因为软件不可能在一个相同的时刻同时更新多个寄存器,结果造成多个通道的时序不能同步,如果再加上例如中断等其它因素,多个通道的时序关系有可能会混乱,造成是不可预知的结果。
Preload enabled就是使能预装载,如果禁用就是立即更新。
参考学习

update geting

lua定时器功能 定时器设置说明_单片机_06

一组有限的中断/DMA请求:比较器1…4、重复寄存器更新和外部同步事件。

Repetition Update

此位定义主定时器重复周期结束时是否发生更新

Burst mode

burst突发模式:定时器的BURST传输,就是指当产生某定时器事件时,可以产生多个DMA请求,并触发多次DMA传输,访问多个定时器寄存器实现从内存到寄存器或从寄存器到内存的数据传输。这里的定时器事件可以是更新事件、比较匹配事件、换相事件以及触发事件。学习 主定时器突发模式该位定义了定时器在突发模式操作期间的行为。启用突发模式时,无法更改此位字段。
0:主定时器计数器时钟保持正常,定时器工作正常
1: 主定时器计数器时钟停止,计数器复位

push pull

推挽输出选择

lua定时器功能 定时器设置说明_stm32_07


关于故障数要启用的错误数必须介于0和5之间和故障标志位只读

dead time insertion

选择在两输出之间插入死区,或者两输出独立。

delay portection mode

延时保护模式