STM32外设——定时器

本文为作者学习笔记
欢迎交流讨论,喜欢的话点个赞吧

定时器

定时器的基本介绍

  • 定时器的基本功能:
  1. 输入捕获
  2. 输出比较
  3. PWM
  4. 编码器接口、霍尔传感器接口
  • 定时器的种类:
  1. 高级控制定时器
  2. 通用定时器
  3. 基本定时器
    > 注:**高级控制定时器>通用定时器>基本定时器**

基本定时器

  • 定时器的特性:

  • 定时器的时钟源:
    在这里插入图片描述

  • 定时器初始化结构体:

在这里插入图片描述1. Prescaler:定时器的预分频设置,可设置的值范围是0-65535,实现1到65535的分频,通过时钟树可以确定总的频率,除以设定的分频系数即为分频后的时钟。
在这里插入图片描述

  1. CounterMode:定时器计数方式,基本定时器只能向上计数,即TIMxCNT只能从0开始递增,无须初始化。
  2. Period:定时器周期,可设置值为0~65535。若在定时器预分频我们已经得到分频后的时钟为1MHz。Period的值我们设置为1000,这样,定时器产生中断的频率为:1MHz/1000=1KHz,即为1ms的定时周期。
  3. ClockDivision:时钟分频,设置定时器时钟CK_INT频率与数字滤波器采样时钟频率分频比。
  4. RepetitionCounter:重复计数器,属于高级控制寄存器专用寄存器位,利用它可以轻松控制输出PWM的个数。
  • 定时器句柄结构体:
    在这里插入图片描述
  • 定时器定时代码的实现:
void MX_TIM5_Init(void)
{
  TIM_MasterConfigTypeDef sMasterConfig = {0};
  TIM_OC_InitTypeDef sConfigOC = {0};

  htim5.Instance = TIM5;
  htim5.Init.Prescaler = 239;						//预分频
  htim5.Init.CounterMode = TIM_COUNTERMODE_UP;		//定时器计数方式
  htim5.Init.Period = 999;							//定时器周期
  htim5.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
  htim5.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;
  if (HAL_TIM_PWM_Init(&htim5) != HAL_OK)
  {
    Error_Handler();
  }
  sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
  sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
  if (HAL_TIMEx_MasterConfigSynchronization(&htim5, &sMasterConfig) != HAL_OK)
  {
    Error_Handler();
  }
  sConfigOC.OCMode = TIM_OCMODE_PWM1;
  sConfigOC.Pulse = 0;
  sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;
  sConfigOC.OCFastMode = TIM_OCFAST_DISABLE;
  if (HAL_TIM_PWM_ConfigChannel(&htim5, &sConfigOC, TIM_CHANNEL_2) != HAL_OK)
  {
    Error_Handler();
  }
  HAL_TIM_MspPostInit(&htim5);

}

高级定时器

  • 定时器特性:在这里插入图片描述
  • 定时器时钟源:
    在这里插入图片描述
  1. 内部时钟源(SMS=000)
  2. 外部时钟源1(SMS=111)
  3. 外部时钟源2(ECE=111)
  4. 内部触发输入
  • 定时器计数器:
    在这里插入图片描述

请在转载文章过程中明确标注文章出处!尊重原创,尊重知识产权,谢谢!

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值