【STM32】利用定时器实现最基本的定时功能(HAL)

  • Post author:
  • Post category:其他




定时器简介

STM32F429单片机有许多定时器Timer,主要分成三类,基本定时器;通用定时器和高级定时器。三种类型的定时器功能由少变多,高级定时器包含了低级定时器的功能。

  • 基本定时器:TIM6、TIM7
  • 通用定时器:TIM2、TIM3、TIM4、TIM5、TIM9~TIM14
  • 高级定时器:TIM1,TIM8

    在这里插入图片描述


注:图中的接口接口时钟就是总线时钟。

定时器最基本的功能就是定时,三种类型的定时器都包含定时功能,今天只讲述如何利用HAL库方法实现利用定时功能点亮LED灯。

定时功能主要有三种方式:


  • 递增计数

    :计数器从0计数到自动加载值(TIMx_ARR),然后重新从0开始计数并且产生一个计数器溢出事件

  • 递减计数

    :计数器从自动装入的值(TIMx_ARR)开始向下计数到0,然后从自动装入的值重新开始,并产生一个计数器向下溢出事件。

  • 递增/减计数

    :计数器从0开始计数到自动装入的值-1,产生一个计数器溢出事件,然后向下计数到1并且产生一个计数器溢出事件;然后再从0开始重新计数。

此处引用Z小旋的图片:

在这里插入图片描述

定时时间计算公式为:

在这里插入图片描述

arr为计数值,psc为定时器分频系数,Tclk一般设定为最大工作频率,其中psc和arr可以自己设定,tclk为定时器时钟,也就是第一个图的最后一列。

举个栗子:

以stm32f429为例,假如想利用TIM2定时500ms,TIM2位于APB2总线上,其定时器时钟为90Mhz,为了方便计算,psc一般设定为

Tclk*100-1

,也就是8999,这样arr的设定值为

定时时间*10-1

,也就是499,单位为ms。

假如使用103单片机,定时100ms,那么arr=999(1000-1),psc=7199(7200-1),tclk=72M。注意单位Tout为ms,tclk为Mhz



利用定时器点亮LED

  1. 打开stm32Cubemx,创建新工程,芯片型号选择STM32F429IG

  2. 配置RCC为外部高速时钟(HSE)。

    在这里插入图片描述

  3. 配置定时器TIM2,选择时钟源为内部时钟,配置计数方式,arr和psc以及是否重装载,并使能中断。

在这里插入图片描述

在这里插入图片描述

Clock Source:选择时钟源(Internal Source)

Prescaler:PSC定时器分频系数 (17999 )

Counter Mode:计数模式( UP:递增计数)

Counter Period:自动重装载值(4999)

auto-reload preload:是否开启重装载(Enable)

只需设置上述四个选项即可,其余设置和本程序无关,保持默认即可。

  1. 设置时钟树

    在这里插入图片描述

选择外部时钟HSE 8MHz

PLL锁相环倍频180倍

系统时钟来源选择为PLL

设置APB1分频器为 /2

这时候定时器的时钟频率为90Mhz

  1. 配置GPIO口

    我的板子LED连接的端口是PF6,找到PF6,并设置output模式

    在这里插入图片描述

    配置GPIO口的相关参数

    在这里插入图片描述

设置输出电平,参照自己板子的电路图,我的是低电平点亮

设置输出模式

设置上/下拉

设置输出速度

设置用户标签

  1. 生成程序

    在这里插入图片描述

    设置工程名称

    设置路径

    选择编译器

    设置库函数版本

在这里插入图片描述

其余设置保持默认

点击GENERATE CODE生成代码

  1. 开启TIM2中断

在这里插入图片描述

HAL_TIM_Base_Start函数在stm32f4xx_hal_tim.h文件中

  1. 在TIM.c中添加中断回调函数
 /* Includes ------------------------------------------------------------------*/
#include "tim.h"

/* USER CODE BEGIN 0 */
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
	if (htim == (&htim2))
	HAL_GPIO_TogglePin(GPIOF, GPIO_PIN_6);
}

/* USER CODE END 0 */

大功告成



版权声明:本文为weixin_43414694原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。