了解把握一个单片机模块能够从底层硬件结构来下手也能够从软件来切入。当然相得益彰能够加速对模块工作方式的了解,便于把握,加速进步解决问题的办法和才能。
关于新手去看timer的硬件框图,仍是有必定难度的。怎样先理性的了解timer的结构及使用它。
关于STM32的定时器咱们能够从参考手册和数据手册得到分类:
1、高档定时器 TIM1和TIM8
2、一般功用定时器
3、根本定时器
从手册上能够得到不能定时器的功用有略微不同:
那咱们先从简略的一般功用定时器来下手。挑选TIM3。
先看一下time-base 单元:
下面来看一下timebase的结构体:能够看到有预分频、计数模式、主动装载值等,
-
typedefstruct
-
{
-
uint16_t TIM_Prescaler;/*!< Specifies the prescaler value used to divide the TIM clock.
-
This parameter can be a number between 0x0000 and 0xFFFF */
-
uint16_t TIM_CounterMode;/*!< Specifies the counter mode.
-
This parameter can be a value of @ref TIM_Counter_Mode */
-
uint16_t TIM_Period;/*!< Specifies the period value to be loaded into the active
-
Auto-Reload Register at the next update event.
-
This parameter must be a number between 0x0000 and 0xFFFF. 被装载到主动装载寄存器里(鄙人一次更新事情时(update event))*/
-
uint16_t TIM_ClockDivision;/*!< Specifies the clock division.
-
This parameter can be a value of @ref TIM_Clock_Division_CKD */
-
uint8_t TIM_RepetitionCounter;/*!< Specifies the repetition counter value. Each time the RCR downcounter
-
reaches zero, an update event is generated and counting restarts
-
from the RCR value (N).
-
This means in PWM mode that (N+1) corresponds to:
-
– the number of PWM periods in edge-aligned mode
-
– the number of half PWM period in center-aligned mode
-
This parameter must be a number between 0x00 and 0xFF.
-
@note This parameter is valid only for TIM1 and TIM8. */
-
} TIM_TimeBaseInitTypeDef;
首要咱们先了解第一项 TIM-Prescaler。即预分频
关于下图的prescaler counter 是预分频的计数器(分频也需求计数)。对照图74的该项,即可看出来。
代码中第二项TIM-CounterMode
向上形式
怎样算计时呢?下一篇再剖析。