基本定时器原理部分

定时器功能:定时、输出比较、输入捕获、互补输出

定时器分类:基本定时器、通用定时器、高级定时器

基本定时器功能简介

1-计数器16bit,只能向上计数,只有TIM6和TIM7

2-没有外部的GPIO,是内部资源,只能用来定时

3-时钟来自PCLK1,可实现1~65535分频

1-时钟源

2-控制器

3-计数器

定时周期的计算

时钟源

1-时钟源来自RCC的TIMx_CLK(属于内部的CK_INT)

2-TIMx_CLK等于多少呢?如何确定?

具体的查看:RCC 专用时钟配置寄存器 (RCC_DCKCFGR )

所有定时器都挂载在总线APB1或APB2上面可在手册P52查看

一般总线的时钟决定了外设的时钟,并且一般外设的时钟都不能超过总线的时钟,。但是定时器有所区别

手册P107查看

if APBx Presc =1 则乘上1 为其他则乘上2

APB1=168M/2(分频因子) =84M

APB2=168M/4(分频因子)=42M

这两种总线分频因子都不是1,都必须乘上2.

由于基本定时器是挂载在APB1上面,所以RCC的TIMx_CLK为84M 。

控制器

1-控制器用于控制定时器的:复位、使能、计数、触发DAC

2-涉及到的寄存器为:CR1/2、DIER、EGR、SR

时基(定时器的心脏)

定时器最主要的就是时基部分:包括 预分频器、计数器、自动重装载寄存器。

预分频器

1-16位的预分频器TIMx_PSC对内部时钟CK_INT进行分频之后,得到计数器时钟CK_CNT=CK_PSC/PSC+1

2-计数器CNT在计数器时钟的驱动下开始计数,计数一次的时间为1/CK_CNT

计数器、自动重装载寄存器

定时器使能(CEN 置 1)后,计数器 CNT在CK_CNT 驱动下向上计数,当 TIMx_CNT 值与 TIMx_ARR 的设定值相等时就自动生成事件并 TIMx_CNT 自动清零,然后自动重新开始计数,如此重复以上过程。

影子寄存器

1-PSC和ARR都有影子寄存器,功能框图上有个影子

2-影子寄存器的存在起到一个缓冲的作用,用户值->寄存器->影子寄存器->起作用,如果不使用影子寄存器则用户值在写到寄存器之后则里面起作用。

ARR影子,TIMx_CR1:APRE位控制

定时时间的计算

如何实现0.5S的定时

1、PSC = 8400-1,定时器频率=84M/(PSC+1)=10000HZ

2、ARR = 4999,从0计数到4999,则计了5000次

3、T = 5000 / 10000 = 0.5S

时基初始化结构体讲解

typedef struct
{
// 分频因子 PSC
uint16 t TIM Prescaler;

// 计数模式,基本定时器只能向上计数
uint16 t TIM CounterMode;

// 自动重装载值
uint32 t TIM Period;

// 外部输入时钟分频因子,基本定时器没有
uint16 t TIM ClockDivision;

// 重复计数器,基本定时器没有,高级定时器专用
uint8 t TIM RepetitionCounter;
} TIM TimeBaseInitTypeDef;

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值