STM32定时器的定时周期

定时器原理框图

计时周期

计时周期由以下几个因素决定:

1,时钟频率。

一般为72MHz。

 

2,预分频系数PSC

计数器的时钟频率CK_CNT等于f CK_PSC /(PSC[15:0]+1)。

如果想要72分频,则PSC寄存器的值应该为71.

 

3,自动重装载寄存器。

这里也要注意:在设置ARR寄存器时,也需要减去一。

如果想要定时1000个周期,则寄存器的值应该设置为999.

 

看手册中的例子:当ARR为0x36时,计数器序列为00~36,共37个值。

 

使用Event Recorder验证

定时器配置

主要参数:外设频率72M,72分频后得到1M;定时周期为1000个时钟。

	TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;


	//
	//  初始化定时器时基

	//设置预分频值,分频后为1M
	TIM_TimeBaseStructure.TIM_Prescaler = 72 - 1;

	//设置自动重装载周期值
	TIM_TimeBaseStructure.TIM_Period = 1000;

	//设置时钟分割:TDTS=Tck_tim
	TIM_TimeBaseStructure.TIM_ClockDivision = 0;

	//TIM向上计数模式
	TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;

	//初始化时基
	TIM_TimeBaseInit(ADC_TIMER_FOR_CURR, &TIM_TimeBaseStructure);

每1000个中断的时间为1秒,记录一次事件。

 

Event Recorder初始化

使用以下代码初始化:

#include "EventRecorder.h"

// initialize and start Event Recorder
EventRecorderInitialize(EventRecordAll, 1U);
EventRecorderStart();

添加事件记录

	EventRecord2(1, 2, 3);

 

验证结果

计时周期是1.001秒。

 

更改代码,将ARR的值配置为999:

    //设置自动重装载周期值
    TIM_TimeBaseStructure.TIM_Period = 1000 - 1;
 

这次结果就对了:

完美!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值