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;
 

这次结果就对了:

完美!

  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
STM32定时器可以用来生成精确的定时信号或者用作计数器来测量时间间隔。定时器的配置步骤如下: 1. 确定使用哪个定时器STM32微控制器通常有多个定时器可供选择,你需要确定使用哪一个。每个定时器都有自己的特性和功能。 2. 配置定时器的时钟源:定时器的时钟源可以选择来自内部时钟源(如系统时钟或外部晶振)或外部输入信号。你需要根据自己的需求来选择合适的时钟源。 3. 配置定时器的工作模式:定时器可以以不同的工作模式工作,例如定时器模式、脉冲计数模式或输入捕获/输出比较模式等。你需要根据你的应用需求选择合适的工作模式。 4. 设置计时器的预分频器:预分频器用于将定时器的输入时钟源分频,以获得所需的计时周期。你需要设置适当的预分频值来满足你的计时要求。 5. 设置定时器的自动重装载值(ARR):自动重装载值决定了计数器溢出的时间,即当计数器达到该值时会重新从零开始计数。你需要根据所需的定时周期设置ARR的值。 6. 配置定时器的中断:如果需要在定时器达到特定时间时触发中断,你可以使能定时器的中断功能,并编写相应的中断处理函数。 7. 启动定时器:完成以上配置后,你可以启动定时器开始计时。 上述步骤中的具体寄存器配置和代码实现可能会根据不同的STM32系列和型号而有所不同。你可以参考相关的STM32系列的参考手册和官方提供的示例代码来完成定时器的配置和使用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值