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 )

 

posted @ 2018-12-20 22:00  q601785959  阅读(356)  评论(0编辑  收藏  举报