15、定时器(1)

1 定时器基本情况

1.1 软件定时原理

使用纯软件的方式实现定时(延时)功能,占用CPU资源且延时不精准

1.2 定时器定时原理

定时器的核心就是计数器,使用精准的时基,通过硬件方式实现定时的功能

1.3 STM32定时器分类

1、常规定时器:基本定时器、通用定时器、高级定时器

2、专用定时器:独立看门狗、窗口看门狗、实时时钟、低功耗定时器

3、内核定时器:SysTick定时器

F1系列有8个常规定时器,记为TIM1 ~ 8,其中6、7为基本定时器,2 ~ 5为通用定时器,1、8为高级定时器。

1.4 定时器区分

1、基本定时器:没有输入和输出通道,常用作时基,即定时功能

2、通用定时器:有多路独立通道,可以输入输出也可作时基

3、高级定时器:除具备通用定时器的功能外,还有死区控制的互补信号输出、刹车输入等功能

2 基本定时器

2.1 基本定时器特性

1、16为递增计数(0 ~ 65535)

2、16位预分频器(1 ~ 65536)

3、可以触发DAC

4、在更新事件时可产生中断DMA

2.2 计数模式

递增模式:计数器(CNT)从0开始递增,直到等于自动重装载寄存器(ARR)的值后停止

递减模式:计数器(CNT)从自动重装载寄存器(ARR)的值开始递减,直到等于0后停止。

中心对齐模式:计数器(CNT)从零开始递增,直到等于自动重装载寄存器(ARR)减一的值后停止,下一次循环从自动重装载寄存器(ARR)的值开始,递减到1后停止,之后的循环重复上述两个过程。

2.3 基本定时器寄存器

寄存器

位

作用

CR1

0

0:关闭计数器

1:使能计数器

7

0:关闭ARR寄存器缓冲

1:使能ARR寄存器缓冲

DIER

0

0:禁止更新中断

1:使能更新中断

8

0:禁止更新DMA请求

1:使能更新DMA请求

CNT

0 ~ 15

储存计数器数值

PSC

0 ~ 15

储存预分频器数值

ARR

0 ~ 15

存储自动重装载数值

2.4 定时器溢出时间计算

Tout=(ARR+1)*(PSC+1)/Ft

其中Tout是定时器的溢出时间,Ft是定时器的时钟源频率,ARR和PSC对应自动重装载寄存器和预分频寄存器的值

3 基本定时器配置

3.1 基本定时器配置步骤(中断)

1、配置基本工作参数:HAL_TIM_Base_Init()

2、MSP初始化:HAL_TIM_Base_MspInit()

3、使能更新中断并启动定时器:HAL_TIM_Base_Start_IT()

4、设置优先级,使能中断

5、编写中断服务函数:HAL_TIM_IRQHandler()

6、编写回调函数:HAL_TIM_PeriodElapsedCallback()

3.2 基本定时器初始化结构体

基本定时器初始化结构体为TIM_Base_InitTypeDef,关键成员如下

成员

作用

可选值

Prescaler

设置预分频系数

0 ~ 65535

CounterMode

设定计数模式

递增:TIM_COUNTERMODE_UP

递减:TIM_COUNTERMODE_DOWN

中心对齐:TIM_COUNTERMODE_CENTERALIGNED

Period

设置自动重装载值

0 ~ 65535

ClockDivision

设置时钟分频因子

不分频:TIM_CLOCKDIVISION_DIV1

2分频:TIM_CLOCKDIVISION_DIV2

4分频:TIM_CLOCKDIVISION_DIV4

RepetitionCounter

设置重复计时次数

0 ~ 255

AutoReloadPreload

自动重装载预装载使能

立即生效:TIM_AUTORELOAD_PRELOAD_DISABLE

等待更新事件:

TIM_AUTORELOAD_PRELOAD_ENABLE

posted @ 2026-08-21 11:17  老鼠学32  阅读(16)  评论(0)    收藏  举报