回答

收藏

23..STM32F469I---入门定时器使用

STMCU STMCU 3255 人阅读 | 0 人回复 | 2018-01-12

【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中找到对应的函数。



七、使能定时器
函数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

分享到:
回复

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

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