STM32 Cubemx 配置定时器定时1mS

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

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

  一、先打开定时器3d

  

  二、配置好时钟code

  

  三、配置定时器设置blog

  

    

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

  

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

  因此定时器频率为 f = 72M / Prescaler / Period = 72000 000 / 72 /1000 = 1000Hz;class

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

  这样就能够定时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后的逻辑  }}
相关文章
相关标签/搜索