STM32的定时器使用介绍

您所在的位置:网站首页 stm32源程序 STM32的定时器使用介绍

STM32的定时器使用介绍

2023-06-06 12:29| 来源: 网络整理| 查看: 265

前言

代码中想用个延时,有两种方式:一种是用软件延时,即在代码中加一个延时函数,但同时有一个缺点:不精确且占用CPU资源。还有一种就是使用定时器,它使用的是精准的时基,通过硬件的方式,实现定时功能。此次介绍的就是如何使用STM32的定时器功能实现延时。话不多说,加快上车吧。

定时器的分类

在STM32中定时器分三类:

基本定时器(TIM6~TIM7)通用定时器(TIM2~TIM5)高级定时器(TIM1和TIM8) 主要功能分类如下图: 在这里插入图片描述 以STM32F103C8T6单片机为例,它的定时器资源包括如下: 在这里插入图片描述 通过对照上面分类可以发现:它有1个高级定时器和3个通用定时器。因为接下来将使用通用定时器,所以作一下通用定时器的介绍,加深理论上的理解: 在这里插入图片描述 定时器的工作原理

定时器核心就是计数器(如下图所示)。 在这里插入图片描述定时器的计数模式 在这里插入图片描述 定时器的时钟源 关于这部分感兴趣可以自己对着图去理解,笔者在此不做解释。剪不断,理还乱的感觉。(附图) 在这里插入图片描述定时器溢出时间计算公式: 对于我们去配定时器的使用,这一步才是关键。因为我们配好相关参数值,其他交给硬件去实现就行了。 在这里插入图片描述 例如,要定时500ms,则:PSC=7199,ARR=4999,Tclk=72M。

工程配置

功能实现:使用定时器TIM2中断方法,每500ms翻转一次LED1灯状态。

RCC配置 在这里插入图片描述LED1灯配置 查看电路原理图,如图: 在这里插入图片描述 在STM32CubeMX配置如下: 在这里插入图片描述时钟数配置 在这里插入图片描述TIM2配置 在这里插入图片描述 在这里插入图片描述 代码实现 在STM32CubeMX中完成配置,生成代码后,进入keil5中。在main.c中重写更新中断回调函数。代码如下: void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) { if(htim->Instance == TIM2) HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_8); //调用翻转函数 }

在主函数中启动定时器: 在main.c中,定时器初始化命令之后加入下列代码:

HAL_TIM_Base_Start_IT(&htim2);

编译、下载进入开发板。观察现象。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3