Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >STM32中定时器的配置与使用

STM32中定时器的配置与使用

原创
作者头像
皓琦
修改于 2024-01-14 09:22:58
修改于 2024-01-14 09:22:58
2.6K1
举报
文章被收录于专栏:STM32学习STM32学习

一、定时器的简介

定时器说白了就是计数器,应用在我们生活的方方面面,比如有闹钟、计时器等。在STM32参考手册中,定时器分为3类,即高级控制定时器(TIM1和TIM8)、通用定时器(TIMx)以及基本定时器(TIM6和TIM7),要学会定时器要懂得分频设置、计数器设置。

1、高级控制定时器(TIM1和TIM8)

高级控制定时器(TIM1和TIM8)由一个16位的自动装载计数器组成,它由一个可编程的预分频器驱动。它适合多种用途,包含测量输入信号的脉冲宽度(输入捕获),或者产生输出波形(输出比较、PWM、嵌入死区时间的互补PWM等)。使用定时器预分频器和RCC时钟控制预分频器,可以实现脉冲宽度和波形周期从几个微秒到几个毫秒的调节。高级控制定时器(TIM1和TIM8)和通用定时器(TIMx)是完全独立的,它们不共享任何资源。它们可以同步操作

2、通用定时器(TIMx)

通用定时器是一个通过可编程预分频器驱动的16位自动装载计数器构成。它适用于多种场合,包括测量输入信号的脉冲长度(输入捕获)或者产生输出波形(输出比较和PWM)。使用定时器预分频器和RCC时钟控制器预分频器,脉冲长度和波形周期可以在几个微秒到几个毫秒间调整。每个定时器都是完全独立的,没有互相共享任何资源。它们可以一起同步操作,

3、基本定时器(TIM6和TIM7)

基本定时器TIM6和TIM7各包含一个16位自动装载计数器,由各自的可编程预分频器驱动。它们可以作为通用定时器提供时间基准,特别地可以为数模转换器(DAC)提供时钟。实际上,它们在芯片内部直接连接到DAC并通过触发输出直接驱动DAC。这2个定时器是互相独立的,不共享任何资源

二、通用定时器(TIMx)的配置参数

1、单片机上使用定时器需要知道的参数

(1)定时器的时间;

(2)单片机内部的计数功能:CNT,CNT不断累加(向上计数)或者减减(向下计数);

(3)计算出每次CNT每次+1或者-1的时间,这个时间通过单片机运行的速度也就是频率计算得出,详细的情况可以查看图1。(预分频器的作用就是为了减慢速度)

(4)计数器存放值范围:0-2^16-1(0-65535) ,(16位自动装载计数器).

(5)怎么降低计数器计数的速度,使用分频,72MHZ对应的时间为1/72=0.013us,如果使用72MHZ的速度计数到65535,需要消耗的时间大概是0.013*65535(HZ与时间对应的关系有:MHZ-us,KHZ-ms,HZ~s).

图1
图1
2、提出的问题

(1)、计数器自增的频率是72MHZ,想让计数器+1的时间为1us,如何分频?计数到65535,需要多少的时间?

分频为72,,得到的技术频率就是1MHZ(1/1MHZ),计数到65535,需要消耗的时间就是65.535ms。

(2)计数器自增的频率是72MHZ,想定时500ms,如何分频,如何设置计数器的最大值?

分频:720,计数器每次+1的时间为10us,计数器最大值为50000。

三、定时器的配置

1、定时1的配置

(1)根据框架图我们可以知道定时器1挂载在APB2上,如图2所示是开时钟位,如图3是定时器1的复位时钟位。

图2
图2
图3
图3

(2)TIM1 和TIM8 预分频器(TIMx_PSC)

图 4
图 4

(3)TIM1 和TIM8 自动重装载寄存器(TIMx_ARR)

图 5
图 5
2、代码实现

(1)timer.c

代码语言:#include "timer.h"
AI代码解释
复制
/*
函数功能: 配置定时器1
函数参数: psc 预分频器  arr重装载值
*/
void TIMER1_Init(u16 psc,u16 arr)
{
   /*1. 开时钟*/
   RCC->APB2ENR|=1<<11; //开启定时器1的时钟
   RCC->APB2RSTR|=1<<11;//开启定时器1复位时钟
   RCC->APB2RSTR&=~(1<<11);//关闭定时器1复位时钟
   /*2. 配置核心寄存器*/
   TIM1->PSC=psc-1;
   TIM1->ARR=arr;
   TIM1->CR1|=1<<0; //开启定时器00
}

(2)main.c

代码语言:#include "stm32f10x.h"
AI代码解释
复制
#include "led.h"
#include "delay.h"
#include  "key.h"
#include "sys.h"
#include "usart.h"
#include "string.h"
#include "stdio.h"
#include "timer.h"
#include "string.h"
#include  "stdlib.h"
int main(void)
{
  KEY_Init();
	LED_Init();
  USARTx_Init(USART1,72,115200);
	TIMER1_Init(720,50000);
	while(1)
	{
	 if(TIM1->SR&1<<0)
	 {
	 LED0=!LED0;
	 LED1=!LED1; 
	 TIM1->SR&=~(1<<0);
	 }
	}
}

2、实验现象

图 6
图 6

我正在参与2024腾讯技术创作特训营第五期有奖征文,快来和我瓜分大奖!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
1 条评论
热度
最新
这些能用89c51 这些跑吗
这些能用89c51 这些跑吗
回复回复点赞举报
推荐阅读
编辑精选文章
换一批
单片机入门学习十三 STM32单片机学习十 通用定时器
本篇重点记录的是STM32F1的通用定时器。 STM32F103ZE有8个定时器,其中2个高级定时器(TIM1、TIM8),4个通用定时器(TIM2、TIM3、TIM4、TIM5),2个基本定时器(TIM6、TIM7)。下表是对这8个定时器的详细描述。
用户4645519
2020/09/07
2.1K0
单片机入门学习十三 STM32单片机学习十 通用定时器
【STM32】HAL库 STM32CubeMX教程六—-定时器中断
今天我们来学习定时器,32的定时器有着非常丰富的功能, 输入捕获/输出比较,PWM,中断等等。是我们学习STM32最频繁使用到的外设之一,所以一定要掌握好,这节我们讲解定时器中断,本系列教程将对应外设原理,HAL库与STM32CubeMX结合在一起讲解,使您可以更快速的学会各个模块的使用
全栈程序员站长
2022/08/11
4.2K0
【STM32】HAL库 STM32CubeMX教程六—-定时器中断
STM32定时器US延时
STM32中有众多定时器,如图 25.1.1 所示。按所处的位置可分为核内定时器和外设定时器。核内定时器就是前面 “第11章 基础重点—SysTick定时器”介绍的SysTick定时器,该定时器位于Cortex-M3内核中。外设定时器由芯片半导体厂商设计,如STM32系列,包含常规定时器和专用定时器。常规定时器是本章重点介绍的介绍的内容,专用定时器在后面几章讲解。
韦东山
2022/05/09
1.4K0
STM32定时器US延时
定时器的PWM输出与输入捕获
STM32F1的定时器非常多,由2个基本定时器(TIM6、TIM7)、4个通用定时器(TIM2-TIM5)和2个高级定时器(TIM1、TIM8)组成。基本定时器的功能最为简单,类似于51单片机内定时器。通用定时器是在基本定时器的基础上扩展而来,增加了输入捕获与输出比较等功能。高级定时器又是在通用定时器基础上扩展而来,增加了可编程死区互补输出、重复计数器、带刹车(断路)功能,这些功能主要针对工业电机控制方面。这里主要介绍通用定时器。
飞哥
2020/07/10
4.3K0
定时器的PWM输出与输入捕获
STM32使用定时器实现微秒(us)级延时
目前开发STM32普遍使用HAL库,但 HAL 库封装的延时函数目前仅支持 ms 级别的延时,日常很多情况下会用到 us 延时,特别是一些传感器的数据读取过程,对时序要求比较严格,us 延时必不可少,因此我们今天来介绍STM32如何使用定时器实现微秒(us)级延时。
跋扈洋
2023/09/02
5.4K0
STM32使用定时器实现微秒(us)级延时
电机控制基础1——定时器基础知识与PWM输出原理
单片机开发中,电机的控制与定时器有着密不可分的关系,无论是直流电机,步进电机还是舵机,都会用到定时器,比如最常用的有刷直流电机,会使用定时器产生PWM波来调节转速,通过定时器的正交编码器接口来测量转速等。
xxpcb
2021/02/26
2K0
电机控制基础1——定时器基础知识与PWM输出原理
【STM32】TIM---基本定时器
基本定时器 :TIM6 和 TIM7 ,基本功能完全一样,但所占资源彼此完全独立。
AXYZdong
2020/10/28
9800
STM32F407 基本定时器配置输出PWM方波
介绍STM32F407定时器PWM波形输出配置方式。 通过逻辑分析采集波形数据进行可视化显示对比。
DS小龙哥
2023/07/08
1.5K0
STM32F407 基本定时器配置输出PWM方波
stm32cubemx使用教程pdf_库乐队完全新手教程
本系列教程将 对应外设原理,HAL库与STM32CubeMX结合在一起讲解,使您可以更快速的学会各个模块的使用
全栈程序员站长
2022/09/27
7520
stm32cubemx使用教程pdf_库乐队完全新手教程
(十七)STM32——定时器
目录 学习目标 内容 简介 定时器分类 定时器功能介绍 计时器模式 工作过程 内部时钟选择 寄存器 配置 代码 总结  ---- 学习目标         本节内容我们来介绍一下有关定时器的知识,其实这个定时器,和我们日常接触的定时器没有什么区别,都是到了一定的时间就去做指定的事情。和51单片机的定时器也没有很大区别,就是数量和功能明显变多了许多,那我们就开始吧! 内容 简介         STM32F4 的定时器功能十分强大,有 TIME1 和 TIME8 等高级定时器,也有 TIME2~TIM
小点点
2022/12/12
1.2K0
(十七)STM32——定时器
STM32F407 基本定时器使用
介绍STM32F407基本定时器的配置方法,分别介绍轮询方式、中断方式使用定时器完成定时。
DS小龙哥
2023/07/08
5440
STM32F407 基本定时器使用
【STM32】TIM定时器
STM32定时器的功能十分丰富,不仅有定时中断功能,还有内外时钟源选择、输入捕获、输出比较、主从触发模式等多种功能
s-little-monster
2024/08/09
2820
【STM32】TIM定时器
【STM32】PWM输出
PWM是“Pulse Width Modulation”的缩写,即脉冲宽度调制,简称脉宽调制。是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术。简单来说,就是对脉冲宽度的控制。
DevFrank
2024/07/24
1930
【STM32】PWM输出
STM32(七)------- PWM输出
我们在日常的嵌入式开发中,PWM可以说是我们最常用的一个技术。我们在电机驱动、电压控制、从测量、通信到功率控制与变换的许多领域中,PWM有着无比重要的地位。
跋扈洋
2022/06/24
2.1K1
STM32(七)------- PWM输出
STM32独立看门狗
在由单片机构成的微型计算机系统中,由于单片机的工作常常会受到来自外界电磁场的干扰,造成程序的跑飞,而陷入死循环,程序的正常运行被打断,由单片机控制的系统无法继续工作,会造成整个系统的陷入停滞状态,发生不可预料的后果,所以出于对单片机运行状态进行实时监测的考虑,便产生了一种专门用于监测单片机程序运行状态的模块或者芯片,俗称:看门狗
全栈程序员站长
2022/09/01
4410
STM32独立看门狗
【STM32F429开发板用户手册】第26章 STM32F429的定时器应用之TIM1-TIM14的中断实现
最新教程下载:http://www.armbbs.cn/forum.php?mod=viewthread&tid=93255 第26章       STM32F429的定时器应用之TIM1-TIM14
Simon223
2020/07/23
9700
【STM32F429开发板用户手册】第26章       STM32F429的定时器应用之TIM1-TIM14的中断实现
STM32定时器—PWM 输出
PWM(Pulse Width Modulation,脉冲宽度调制)。是一种利用微处理器的数字输出来对模拟电路进行控制的技术,广泛应用在测量、通信、功率控制等诸多领域。
韦东山
2022/05/09
1.7K0
STM32定时器—PWM 输出
STM32Cube-11 | 使用通用定时器闪烁LED
本篇详细的记录了如何使用STM32CubeMX配置STM32L431RCT6的通用定时器外设,以中断的方式使LED闪烁。
Mculover666
2020/07/16
1.4K0
STM32Cube-11 | 使用通用定时器闪烁LED
【STM32H7教程】第33章 STM32H7的定时器应用之TIM1-TIM17的中断实现
完整教程下载地址:http://www.armbbs.cn/forum.php?mod=viewthread&tid=86980 第33章       STM32H7的定时器应用之TIM1-TIM17
Simon223
2019/11/14
1.5K0
【STM32H7教程】第33章    STM32H7的定时器应用之TIM1-TIM17的中断实现
STM32Cube-12 | 使用通用定时器产生PWM驱动蜂鸣器
本篇详细的记录了如何使用STM32CubeMX配置STM32L431RCT6的通用定时器外设,产生 PWM 驱动无源蜂鸣器。
Mculover666
2020/07/16
1.9K0
STM32Cube-12 | 使用通用定时器产生PWM驱动蜂鸣器
相关推荐
单片机入门学习十三 STM32单片机学习十 通用定时器
更多 >
LV.1
这个人很懒,什么都没有留下~
作者相关精选
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档