打印
[STM32WB]

STM32WB09KE+TIM定时器

[复制链接]
16|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
今天来用一下STM32WB09KE的定时器,STM32WB09KE是一款基于ARM Cortex-M0+内核的超低功耗无线微控制器,集成了强大的功能,包括低功耗蓝牙®和超低功耗的无线电,非常适合用于物联网(IoT)设备。
TIM定时器是STM32系列微控制器中的重要外设之一,它提供了精确的定时功能,可用于多种应用场景,可以这样说,每个MCU上面都会有这个定时器,而且是非常重要的,很多地方都需要用到它。
一、TIM定时器的类型与功能
STM32WB09KE中的TIM定时器根据复杂度和应用场景的不同,分为高级定时器、通用定时器和基本定时器三种类型。

基本定时器:主要提供定时中断功能。它只有一个内部时钟源,且只能向上计数。基本定时器通常用于需要简单定时功能的场合。
通用定时器:功能更为丰富,具备基本定时器的所有功能外,还支持内外时钟源选择、输入捕获、输出比较、编码器接口以及主从触发模式等。
高级定时器:功能最为强大,包含了通用定时器的所有功能,并在此基础上进行了升级和扩展。高级定时器具有更高的定时精度和更多的输出比较通道,适用于需要高精度定时和复杂控制功能的场合。
二、TIM定时器的结构与工作原理
TIM定时器的核心结构包括预分频器、计数器和自动重装载寄存器。这些组件共同构成了时基单元,用于实现定时功能。

预分频器:对输入的时钟信号进行分频处理,以降低计数器的计数频率。预分频器的值可以通过编程进行设定,从而实现不同的分频比。
计数器:对经过预分频器处理后的时钟信号进行计数。当计数器的值达到设定的ARR值时,会产生一个更新事件或更新中断。
自动重装载寄存器:用于存储计数目标值。当计数器的值达到ARR值时,计数器会被清零,并重新开始计数。同时,可以触发一个更新事件或更新中断。

三、TIM定时器的配置与使用
在使用TIM定时器之前,需要进行一系列的配置工作,包括时钟源选择、时基单元初始化、中断配置等。

时钟源选择:TIM定时器可以选择内部时钟源或外部时钟源作为计数时钟。内部时钟源通常来自微控制器的内部时钟系统,而外部时钟源则可以通过GPIO口输入。
时基单元初始化:包括设置预分频器的值、计数器的计数模式以及ARR的值等。这些参数决定了定时器的定时精度和定时范围。
中断配置:如果需要定时器在达到设定时间时产生中断信号,还需要配置中断相关的参数,包括中断优先级和中断服务函数等。
在配置完成后,就可以通过启动定时器来开始计时了。在计时过程中,可以通过读取计数器的值来监控定时器的状态,或者在达到设定时间时通过中断服务函数来处理定时事件。

四、定时器配置
以上是有关定时器的理论知识,下面开始STM32WB09KE的定时器使用,与配置。
先打开STM32CubeMX-找到STM32WB09KE或者NUCLEO-WB09KE板,找到定时器进行配置。




定时器相关代码:
static void MX_TIM2_Init(void)
{

  TIM_ClockConfigTypeDef sClockSourceConfig = {0};

  htim2.Instance = TIM2;
  htim2.Init.Prescaler = PRESCALER_VALUE;
  htim2.Init.CounterMode = TIM_COUNTERMODE_UP;
  htim2.Init.Period = PERIOD_VALUE;
  htim2.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
  htim2.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;
  if (HAL_TIM_Base_Init(&htim2) != HAL_OK)
  {
    Error_Handler();
  }
  sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL;
  if (HAL_TIM_ConfigClockSource(&htim2, &sClockSourceConfig) != HAL_OK)
  {
    Error_Handler();
  }
}



实际输出波形:



输出视频:






使用特权

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

本版积分规则

认证:工程师
简介:超越自我,为设计激发灵感和想象。

163

主题

652

帖子

3

粉丝