Bootstrap

STM32F103的定时器(基于HAL库+寄存器)

1. 定时器的分类

标题

2. 定时器特性表

3. 核心时基单元

影子寄存器才是实际起作用的,ARR只是缓冲

递增时,当 CNT == ARR

改变寄存器也可产生软件更新事件

更新事件产生,将于装载寄存器的值加载到对应的影子寄存器中

3.1. 计数模式和溢出条件

3.2. 溢出时间计算

4. 嘀嗒(Systick系统)定时器

定时器是STM32中一个非常强大的外设,功能强大,用途很广。

STM32F103系列提供了 8 个定时器:

1)2 个基本定时器(TIM6、7),

2)4个通用定时器(TIM2—5),

3)2个高级定时器(TIM1、TIM8)。

系统定时器(SysTick系统)是属于CM3内核,内嵌在NVIC中。

4.1. Systick的执行过程

4.2. 基于寄存器定时器LED闪烁

递减计数器在时钟的驱动下,从重装载寄存器的初值开始往下递减计数到0(在递减的过程中值可以在STK_VAL中查看到),产生中断和置位COUNTFLAG标志。然后又将重装载寄存器值开始重新递减计数,如此循环。

4.3. 基于HAL定时器LED闪烁

void HAL_IncTick(void)
{
    uwTick += uwTickFreq;
    if (uwTick % 1000 == 0)
    {
        printf("%d\r\n", uwTick);
        HAL_GPIO_TogglePin(LED_1_GPIO_Port, LED_1_Pin);
    }
}

5. 基本定时器

基本定时器TIM6和TIM7各包含一个16位自动装载计数器,由各自的可编程预分频器驱动。

这个2个基本定时器只能向上计数,由于没有外部IO,所以只能计时,不能对外部脉冲进行计数。

功能:定时中断,主模式,触发DAC。

;