stm32中有着三种定时器:两个高级定时器(TIM1,TIM8),四个通用定时器(TIM2 TIM3 TIM4 TIM5)和基本定时器(TIM6和TIM7)。我用的是通用定时器2来定时,每一秒就让LED闪烁一下,定时器的强大之处表示让新手的我吃了很大的苦头,对于别的功能一时也不理解,所以想知道定时器的具体工作原理的小伙伴门看一下视频或资料,这里贴上一个前辈的文章:https://blog.youkuaiyun.com/liming0931/article/details/82938522
定时器的定时中断功能还是比较简单的,无非就是配置三个寄存器:控制寄存器(TIM_CR1),预分频器( TIM_PSC)和 自动重装载寄存器(TIM_ARR),其中定时器的时间公式为: Tout = ((arr+1)*(psc+1))/Tclk,arr就是指设定的值,计时器一旦超过或者低过就产生中断信号,psc指的是预分频的值,Tclk是指时钟的频率,一般默认72MHZ,贴上代码:
#include "Time.h"
void Time_Init()
{
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2,ENABLE);
TIM_TimeBaseInitTypeDef time;
time.TIM_Period=7199; //arr=7199
time.TIM_CounterMode=TIM_CounterMode_Up; //向上计数
time.