爱板网论坛

查看: 113|回复: 0

[教程] 23..STM32F469I---入门定时器使用

[复制链接]

408

主题

92

好友

5686

积分

状元

Rank: 6Rank: 6

  • TA的每日心情
    郁闷
    昨天 22:34
  • 签到天数: 505 天

    连续签到: 87 天

    [LV.9]以坛为家II

    发表于 2018-1-12 16:32:00 |显示全部楼层
    【STM32F469I试用】入门(三):定时器使用【转】

    定时器的使用与硬件的关系 不太大,有关系也是一个GPIO的LED或是PWM。
    就以简单 的LED为例。
    先看一下定时器的初始化程序。
      TIM_HandleTypeDef    TimHandle;

      uwPrescalerValue = (uint32_t)((SystemCoreClock / 2) / 10000) - 1;

      /* Set TIMx instance */
      TimHandle.Instance = TIMx;//timer3

      /* Initialize TIMx peripheral as follows:
           + Period = 10000 - 1
           + Prescaler = ((SystemCoreClock / 2)/10000) - 1
           + ClockDivision = 0
           + Counter direction = Up
      */
      TimHandle.Init.Period            = 10000 - 1;//
      TimHandle.Init.Prescaler         = uwPrescalerValue;
      TimHandle.Init.ClockDivision     = 0;
      TimHandle.Init.CounterMode       = TIM_COUNTERMODE_UP;
      TimHandle.Init.RepetitionCounter = 0;
      if (HAL_TIM_Base_Init(&TimHandle) != HAL_OK)
      {
        /* Initialization Error */
        Error_Handler();//LED3ÁÁ
      }

      /*##-2- Start the TIM Base generation in interrupt mode ####################*/
      /* Start Channel1 */
      if (HAL_TIM_Base_Start_IT(&TimHandle) != HAL_OK)
      {
        /* Starting Error */
        Error_Handler();//LED3ÁÁ
      }

    一、定义定时器的句柄
    二、确定使用的定时器,定义 在main.h中
    #define TIMx                           TIM3

    三、计算周期与装载值
    四、设置时钟分频
    五、设置定时模式
    其他的定时模式还有
    #define TIM_COUNTERMODE_UP                 ((uint32_t)0x0000)
    #define TIM_COUNTERMODE_DOWN               TIM_CR1_DIR
    #define TIM_COUNTERMODE_CENTERALIGNED1     TIM_CR1_CMS_0
    #define TIM_COUNTERMODE_CENTERALIGNED2     TIM_CR1_CMS_1
    #define TIM_COUNTERMODE_CENTERALIGNED3     TIM_CR1_CMS

    六、使用函数HAL_TIM_Base_Init初始化定时器。
    其实HAL_TIM_Base_Init函数中到底是怎么初始化 的,对于想要马上上手的同学,是不用理会的。
    但是要是想深入学习,可以在stm32f4xx_hal_tim.c中找到对应的函数。

    1.jpg


    七、使能定时器
    函数HAL_TIM_Base_Start_IT。
    HAL_StatusTypeDef HAL_TIM_Base_Start_IT(TIM_HandleTypeDef *htim)
    {
      /* Check the parameters */
      assert_param(IS_TIM_INSTANCE(htim->Instance));

      /* Enable the TIM Update interrupt */
      __HAL_TIM_ENABLE_IT(htim, TIM_IT_UPDATE);

      /* Enable the Peripheral */
      __HAL_TIM_ENABLE(htim);

      /* Return function status */
      return HAL_OK;
    }
    也可以看到还有一个函数是
    Error_Handler();
    它的作用就是在初始化或使能是出错后点亮LED3

    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    关闭

    站长推荐上一条 /5 下一条

    手机版|爱板网 |网站地图  

    GMT+8, 2018-2-26 07:18 , Processed in 0.279816 second(s), 11 queries , Memcache On.

    苏公网安备 32059002001056号

    Powered by Discuz!

    回顶部