STM32 定时器时间设定及计算最简单理解

STM32 定时器时间设定及计算最简单理解

玩了一段时间STM32,没有经过系统学习,对这个定时器定时时间计算理解很懵懂!

如下面定时器初始化代码

void timer7_init(u16 clock,u16 Preiod)//void timer7_init(84,5000)

{

TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;

RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM7,ENABLE);

TIM_DeInit(TIM7);

/*TIM_Period=自动装载值,TIM_Prescaler=预分频值*/

TIM_TimeBaseStructure.TIM_Period = Preiod - 1; //5000定时器预分频器

TIM_TimeBaseStructure.TIM_Prescaler = clock - 1; //84 预分频值

TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1; //时钟频率不分频

/*TIM_CounterMode:定时器计数方式,可为向上计数、向下计数以及中心对齐模式*/

TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;

TIM_TimeBaseInit(TIM7,&TIM_TimeBaseStructure);

TIM_ClearFlag(TIM7,TIM_FLAG_Update);

TIM_ITConfig(TIM7,TIM_IT_Update,ENABLE);

TIM_Cmd(TIM7,ENABLE);

}

TIM_Period=自动装载值

TIM_Prescaler=预分频值

定时时间计算:

定时时间=(TIM_Period)X(TIM_Prescaler)/Timer clocks(定时器时钟频率)

假如:TIM_Period=5000,TIM_Prescaler=84,Timer clocks=84Mhz

(5000X84)/84=5000us=5ms

对定时器时间设定可以理解为:

假如你需要定时1MS,TIM_Period(自动装载值)设定为1000,也就是1000us,

TIM_Prescaler(预分频值)设定与Timer clocks(定时器时钟频率)相同就行,比如

定时器时钟频率是84,TIM_Prescaler(预分频值)设定为84就行。

🎨 相关创意作品

《刀塔2》dota2有几个猫?
哪个才是365官网

《刀塔2》dota2有几个猫?

📅 09-01 👁️ 2763
Galaxy Store
365速发国际是黑平台吗

Galaxy Store

📅 10-01 👁️ 3733
传奇永恒挖矿具体在哪里在哪
365bet线路检测

传奇永恒挖矿具体在哪里在哪

📅 10-06 👁️ 2816