赫兹(Hz)是频率的基本单位,每秒钟的周期次数。兆赫与赫兹之间的换算关系是1MHz=1,000,000Hz。
1MHz等于1,000,000赫兹。 兆赫(MHz)是频率的单位,符号为MHz,1兆赫等于10^6赫兹。
STM32的通用定时器,是一个通过可编程预分频器(Prescaler)驱动的16位自动重装主计数器(Counter Period)构成。可以对内部时钟或触发源以及外部时钟或触发源进行计数。
首先,定时器时钟信号送入16位可编程预分配器(Prescaler),该预分配器系数为0~65535之间的任意数值。预分配器溢出后,会向16位的主计数器(Counter Period)发出一个脉冲信号。
预分频器,本质上是一个加法计数器,预分频系数实际上就是加计数的溢出值。
定时器发生中断时间的计算方法:
定时时间 = (可编程预分频器+1 ) X (主计数器+1) X 1/ 定时器时钟频率
例:假设时钟信号为1KHz,可编程预分频器系数为9,主计数器系数为9。此时定时器为0.1秒
定时参数按下面的计算方法:
(分频系数/时钟频率)定时器周期 = 需要的时间
下面以频率为72MHz为例:
以1s为例:1s = (7199+1)/72000000(9999+1)
以0.5s为例:0.5s = (7199+1)/72000000*(4999+1)
当然,分频系数、时钟频率、定时器周期 可以根据实际情况设置,不一定仅局限于某个数,比如0.5s也可以这么计算:0.5s = (3599+1)/72000000*(9999+1)
stm32H743IIT6设置的定时器的频率为200MHz,若要定时1称则
1s = (19999+1)/[200*(10^6)](9999+1)
htim3.Init.Prescaler = 19999;
htim3.Init.Period = 9999;
只需改这两个参数就可以了。
若要定时0.1秒,则:0.1s = 1000ms = (1999+1)/[200*(10^6)](9999+1)
若要定时0.01秒,则:0.01s = 100ms = (199+1)/[200*(10^6)](9999+1)
若要定时0.001秒,则:0.001s = 10ms = (19+1)/[200*(10^6)](9999+1)
若要定时0.0001秒,则:0.0001s = 1ms = (19+1)/[200*(10^6)](999+1)
若要定时0.1ms,则:0.1ms = 100us = (19+1)/[200*(10^6)](999+1)
若要定时0.01ms,则:0.01ms = 10us = (19+1)/[200*(10^6)](99+1)
若要定时0.001ms,则:0.001ms = 1us = (19+1)/[200*(10^6)](99+1)