引子
1.与PWM章节共用代码
2.生活中经常会用到下面几样,
- 闹钟,到时间了给出提醒
- 秒表(计时器),统计做一件事花费的时间
原理
如上图,定时器需要一个时钟输入,在每个时钟触发时,做如下操作
1. 计数器做增加或减少的操作
2. 跟目标值做比较,达到目标则触发中断,并重新把预置值设置到计数器中
因此,实际配置中需要配置如下几步
- 时钟源和分频系数等时钟参数
- 预置值和目标值
- 计数方式,增长和减少
- 循环方式,单次还是循环触发
配置举例
功能设计
使用定时器2,控制LED灯每隔1秒亮一次。
定时器配置
-
配置分频,如图,定时器2的时钟来自AHB2(108M)–/2–>APB1(54M)–*2–>TIMER2(108M),因此为了实现1s计时,此处配成108MHz/108100=10KHz,故Prescaler = 10800-1。
TIMER_BaseInitParaStructure.TIMER_Prescaler = 10800-1; /* 10KHz */
-
配置计数方式
TIMER_BaseInitParaStructure.TIMER_CounterMode = TIMER_COUNTER_UP;
-
配置预置值,第一步说把时钟配置成10KHz了,在10KHz的频率下,计数10000次,就是1s,故TIMER_Period = 10000-1
TIMER_BaseInitParaStructure.TIMER_Period =<