173 2438 5004
KEROS加密芯片——品牌直销 | 免费样品 | 技术支持
当前位置:网站首页 > 资讯中心 正文 资讯中心

stm32f100定时器计算

keros@mark 2023-03-17 资讯中心

stm32定时器的定时计算公式Tout= ((arr+1)*(psc+1))/Tclk里,为什么预分频系数以及寄存器周期的值都要加1

我的理解:

ARR+1:定时器寄存器是从0开始计时的,0也算做一个值,比如你定时10个定时器周期,那么你往ARR寄存器中应写入9

PSC+1:道理和上面一样,0=1分频,1=2分频,2=3分频,,,

虽然寄存器中的值是0,但实际上是1,所以计算的时候要+1

STM32定时器的定时超时如何计算?与时钟有何关联

和定时器时钟关联的有总线APB1或APB2等时钟,定时器外设挂载在这个总线上使用的就是这个总线时钟,然后定时器配置时有个预分频值prescale可以设置分频,还有个时钟分割,这两个可以控制定时器计数的快慢。例如总线频率为72M,预分频值为71(自动+1,实际为72),那么现在的计数频率就是1M赫兹,也就是1微秒计一个数。假设时钟周期设置为1000,那么在1000个计数后(1ms时间)就会使溢出标志置位。

STM32基本定时器

这是TIM2的初始化配置,有注释。希望能帮到你。不过这个是用了函数库中的 函数的。

工程中用函数库还是比较方便的,没见过谁做工程时,配置各种东西还直接去操作寄存器的。那不累死!

TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;

RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2,ENABLE);

/* ---------------------------------------------------------------

TIM2 Configuration: Output Compare Timing Mode:

TIM2CLK = 36 MHz, Prescaler = 36000, TIM2 counter clock = 1KHz

SET TTIM2 TIME 10mS

--------------------------------------------------------------- */

TIM_TimeBaseStructure.TIM_Period = 10; //计数值。 计时时间=计数值/TIM2 counter clock

TIM_TimeBaseStructure.TIM_Prescaler = 35999; //与分频

TIM_TimeBaseStructure.TIM_ClockDivision = 0; //定时器时钟(CK_INT)频率与数字滤波器(ETR,TIx)使用的采样频率之间的分频比例。

//TIM_CKD_DIV1 -TDTS = Tck_tim TIM_CKD_DIV1=0x0000 //TIM_CKD_DIV1 -TDTS = Tck_tim

//TIM_CKD_DIV2 -TDTS = 2Tck_tim TIM_CKD_DIV2=0x0100 //TIM_CKD_DIV1 -TDTS = Tck_tim

//TIM_CKD_DIV4 -TDTS = 4Tck_tim TIM_CKD_DIV4=0x0200

TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //向上计算是从0计数到自动加载值,向下计算是从自动加载值计数到0

//中央对齐模式是从0计数到自动加载值(溢出),再从自动加载值计数到1(溢出)在从0开始计数。。。

//所以不管选用哪种模式,溢出的时间是不变的

TIM_TimeBaseInit(TIM2, TIM_TimeBaseStructure);

TIM_ARRPreloadConfig(TIM2,ENABLE); //预装载使能

TIM_ITConfig(TIM2,TIM_FLAG_Update,ENABLE); //TIM更新中断源

TIM_Cmd(TIM2, ENABLE); //开TIM2定时器

stm32定时器的问题

是用来产生定时器的中断溢出时间的,计算公式是:

T=Ftosc/(TIM_Period+1)*(TIM_Prescaler+1);(Ftosc是定时器时钟)

其中T,是中断溢出时间,你的这个例子就是1Sec,TIM_Period,是计数器的计数频率,TIM_Prescaler是定时器隔多少个周期溢出,化量溢出时间的。这两个数字的组合可以产生小于(最小分频因子,最大溢出周期,所产生的时间)下的任意时间。一般是产生1S,不过定时器只是用来产生1S时间太占用CPU资源了,如果想不占用CPU,可以用一个特殊的定时间,就是滴答了。最后还有第三句的意思是就产生定时器时对系统时钟的分频因子。此例中是1分频,就是不分频。

STM32定时器 怎么算时间?分频数

看时钟树选择定时器时钟,周期=定时器时钟/TIM_Prescaler预分频数/(TIM_Period自动重装载寄存器周期-1)

stm32定时器定时时间怎么算

分频值是是指你将系统时钟的频率减小,假设时钟频率是72mhz,然后分频值是7199,现在你的定时器值就是10khz,表示每计一个数,然后过了1/(10^4)秒,然后你的重装值就是你的时间了,如果值是9999,就表示定时时间为1s。

本文标签:stm32f100定时器计算

产品列表
产品封装
友情链接