打印
[STM32F4]

【STM32F469I试用】入门(三):定时器使用

[复制链接]
2006|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
jinyi7016|  楼主 | 2015-12-29 15:29 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 jinyi7016 于 2015-12-29 15:30 编辑

定时器的使用与硬件的关系 不太大,有关系也是一个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




沙发
秋风式街球| | 2015-12-31 15:25 | 只看该作者

使用特权

评论回复
板凳
秋风式街球| | 2015-12-31 15:27 | 只看该作者
楼主很强大哦  谢谢热心分享   能不能把每个分享帖的源代码附上啊  谢啦

使用特权

评论回复
地板
zhuotuzi| | 2015-12-31 17:34 | 只看该作者
有部分头文件注释的很清楚,有部分不行,估计不同模块是不同人写的。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

131

主题

1336

帖子

12

粉丝