使用Cubemx配置STM32定时器中断

STM32的定时器中断Cubemx

  • 0.定时器简介
  • 1.配置时钟
  • 2.配置定时器
  • 3.创建工程
  • 4.补充源码
  • 0.定时器简介

    基本定时器功能:

    1. 16位向上、向下、向上/下自动装载计数器
    2. 16位可编程(可以实时修改)预分频器,计数器时钟频率的分频系数为1~65535之间的任意数值
    3. 触发DAC的同步电路 注:此项是TIM6/7独有功能.位于APB1总线上

    通用定时器的主要功能:

    1. 16位向上、向下、向上/下自动装载计数器
    2. 16位可编程(可以实时修改)预分频器,计数器时钟频率的分频系数为1~65535之间的任意数值
    3. 4 个独立通道(TIMx_CH1~4)可以用作:
      测量输入信号的脉冲长度( 输入捕获)
      输出比较
      单脉冲模式输出
      PWM输出(边缘或中间对齐模式)
      支持针对定位的增量(正交)编码器和霍尔传感器电路
      如下事件发生时产生中断/DMA:
      更新:计数器向上溢出/向下溢出,计数器初始化(通过软件或者内部/外部触发)
      触发事件(计数器启动、停止、初始化或者由内部/外部触发计数)
      输入捕获
      输出比较
      位于APB1总线上

    高级定时器的主要功能:

    1. 高级定时器具有基本,通用定时器的所有的功能,还具有控制交直流电动机所有的功能,
    2. 输出6路互补带死区的信号,刹车功能等等
      位于APB2总线上

    总括:基本定时器就是单纯的定时计数器,通用定时器多了四个通道,相对应的增加了功能,高级定时器具有基本,通用定时器的所有的功能,并且添加了其他功能

    1.配置时钟

    使用外部石英晶振提供时钟频率
    时钟配置
    时钟树

    2.配置定时器


    定时时间计算公式

    溢出时间=(计数周期+1)*(分频+1)/时钟频率
    时钟频率要看使用的定时器挂在那个时钟树上,查看是时钟树的频率即可

    3.创建工程


    4.补充源码

    打开工程后,找到回调函数




    在主函数中重写该函数即可:

    void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
    
    /* USER CODE BEGIN PV */
    void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
    {
       
        if (htim == (&htim6))
        {
    		/*自己的业务逻辑*/
        }
    }
    /* USER CODE END PV */
    

    在main.c主函数上方初始化使能定时器:

      /* USER CODE BEGIN 2 */
        /*启动定时器,使能定时器中断*/
        HAL_TIM_Base_Start_IT(&htim6);
      /* USER CODE END 2 */
    

    作者:想和我重名?

    物联沃分享整理
    物联沃-IOTWORD物联网 » 使用Cubemx配置STM32定时器中断

    发表回复