STM32定时器
1. STM32的定时器分为基本定时器/通用定时器/高级定时器3种, 其中基本定时器只有定时功能,通用定时器和高级定时器可以做PWM和输入捕获
高级定时器额外可以做互补输出
2. 定时器的分频系数PSC-1 为最终要的频率, 如要1M频率 72M/PSC = 72M/71 因为内部会自动+1
定时器的ARR自动重装载寄存器与PSC一样,如要重装载500那么设置499即可
3. 基本定时器没有向下计数模式和时钟分频因子 "ClockDivision",因此可以不设置
通用定时器模式分为向上计数向下计数和对齐计数模式,当溢出时产生中断
向上计数模式时,从0开始计数到设定值后重新从0开始,向下计数模式相反,向上向下计数模式时,从0计数到指定值后再从指定值向下计数到0
特别注意有的定时器支持向上向下计数,有的只支持单边计数
预分频系数影响计数速度,比如2分频原始频率为48M,则计数慢一半24M
注意定时器分辨率,有的能存储数据更大
中断标志位要软件手动清除,通用定时器参数为两个16位的寄存器,
时间溢出计算公式: 溢出时间=tclk/(计数器值+1)x(预分频系数+1)
100k等于1ms
开启步骤
1.使能通用定时器,在APB1总线上
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);
2.初始化通用定时器
TIM_TimeBaseInit(TIM3, &TIM_Timesture);
3.使能通用定时器
TIM_Cmd(TIM3, ENABLE);
4.开启定时器中断
TIM_ITConfig(TIM3, TIM_IT_Update,ENABLE);
5.中断初始化
NVIC_Init(&NVIC_Initstructe);
6.写中断函数
TIM3_IRQHandler(void )