• STM32 Cubemx 配置定时器定时1mS


      最近才发现原来我把定时器里的配置参数代表的意义给搞混了,这里记录一下,防止以后自己忘记。

    以建立一个定时1mS定时器为例:

      1、先打开定时器

      

      2、配置好时钟

      

      3、配置定时器设置

      

        

        重点来了,以前在这里我一直以为这里配置的就是时间,然后在调频率的时候,一直不对劲,知道查阅了硬石的资料才发现,这里配置的是进入定时器中断的频率,然后要定的时间要跟据这个频率来定时的。

      

      由这个图可见,这里配置的是定时器产生中断的频率,然后再跟据频率与时间的关系推出定时的时间。

      所以定时器频率为 f = 72M / Prescaler / Period = 72000 000 / 72 /1000 = 1000Hz;

      定时时间T = 1 / f 则: 1s / 1000Hz = 1000 000us / 1000Hz = 1000us =1ms。

      这样就可以定时1ms了啦,如果要做PWM频率调频,就直接改 pre 与 per 算出 f 就可以了。

    具体公式如下图(上面的计算我是为了方便理解把公式逆运算了一次):

      

       最后使用定时器中断跟关闭定时器中断以及回调函数即可, 使用中断的时候注意要先开启中断

    HAL_TIM_Base_Start_IT(&htim1); //使用定时器的时候调用这个函数启动

    HAL_TIM_Base_Stop_IT(&htim1); //停止定时器的时候调用这个函数关闭

    void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
    {
      if(htim->Instance == TIM1)
      {
        //编写回调逻辑,即定时器1定时1MS后的逻辑
      }
    }

     补充:最后记得生成STM32Cubemx文件时打开定时器中断,不然进不了回调函数,一般的话习惯用TIM3做定时器

  • 相关阅读:
    区间未出现的最小值(牛客)
    (大幂分解求和)A^X mod P(数的高次幂)
    刷题-力扣-面试题17.10. 主要元素
    刷题-力扣-503. 下一个更大元素 II
    刷题-力扣-232. 用栈实现队列
    刷题-力扣-1476. 子矩形查询
    刷题-力扣-338. 比特位计数
    刷题-力扣-304. 二维区域和检索
    刷题-力扣-303. 区域和检索
    刷题-力扣-896. 单调数列
  • 原文地址:https://www.cnblogs.com/xingboy/p/9897500.html
Copyright © 2020-2023  润新知