STM32——通用定时器
一、三种定时器区别
定时器分为:高级定时器、通用定时器和基本定时器
二、通用定时器功能特点描述
STM32F4的通用TIMx(TIM2、TIM3、TIM4和TIM5)定时器功能特点包括:
·16/32位向上、向下、向上/向下计数模式,自动装载计数器(TIMx_CNT)。
·16位可编程(可实时修改)预分频器(TIMx_PSC),计数器时钟频率的分频系数为1~65535之间的任意数值。
·4个独立通道(TIMx_CH1~4),这些通道可以用来作为:输入捕获、输出比较、PWM生成(边缘或中间对齐模式)、单脉冲模式输出
·可使用外部信号(TIMx_ETR)控制定时器和定时器互连(可以用1个定时器控制另外一个定时器)的同步电路。
·如下事件发生时产生IRQ/DMA:(6个独立的IRQ/DMA请求生成器)
1、更新:计数器向上溢出或向下溢出,计数器初始化(通过软件或者内部/外部触发)
2、触发事件(计数器启动、停止、初始化或者由内部/外部触发计数)
3、输入捕获
4、输出比较
5、支持针对定位的增量(正交)编码器和霍尔传感器电路
6、触发输入作为外部时钟或者按周期的电流管理
·STM32的通用定时器可以被用于:测量输入信号的脉冲长度(输入捕获)或者产生输出波形(输出比较和PWM)等
·使用定时器预分频器和RCC时钟控制器预分频器,脉冲长度和波形周期可以在几个微秒到几个毫秒间调整。STM32的每个通用定时器都是完全独立的,没有互相共享的任何资源。
三、计数器模式
通用定时器可以向上计数、向下计数、向上向下双向计数模式。
1、向上计数模式:计数器从0计数到自动加载值(TIMx_ARR),然后重新从0开始计数并且产生一个计数器溢出事件。
2、向下计数模式:计数器从自动装入的值(TIMx_ARR)开始向下计数到0,然后从自动装入的值重新开始,并产生一个计数器向下溢出事件。
3、中央计数模式(向上向下计数):计数器从0开始计数到自动装入的值-1,产生一个计数器溢出事件,然后向下计数到1并且产生一个计数器溢出事件,然后再从0开始重新计数。
四、通用定时器框图(部分)
通用定时器工作过程(TIM2,3,4,5)
第一部分作用是产生一个时钟(时钟源的产生),第二部分是实际电路,第三部分是输入捕获,第四部分是输出比较,第五部分(中间)是相关寄存器。
第一部部分主要作用是产生一个CK_PSC时钟,供实际电路使用。STM32通用定时器的时钟来源有:1、内部时钟(CK_INT)实际上是通过APB1倍频而来的一个时钟,经过复位、使能、向上/向下、计数,从而产生时钟CK_PSC,是第一个时钟源。2、外部引脚,定时器ETR引脚(TIMx_ETR)(可在STM32F407ZGT6中搜索ETR),ETR经过极性选择、边沿监测和预分频,以及滤波,再通过触发控制器,作为第二个时钟源。3、ITR0~4是内部触发输入口,实际上是支持定时器与定时器之间的级联(一个定时器的输出可以作为另外一个定时器的输入),经过选择器,再经过触发控制器,作为第三个定时器。ITR的输入是来自其它定时器的TRGO。4、TI1FP1、TI2FP2,来自TI1、TI2即定时器的外部通道引脚。经过选择器,和触发控制器,是第四个时钟来源。
第二部分是实际电路:CK_PSC经过PSC预分频器将时钟进行分频,产生CK_CNT时钟作为最终时钟,根据触发控制器后向上/向下的设置进行向上/向下计数。自动重装载寄存器根据向上/向下的设置进行相应的计数(从自动重装载寄存器里加载初值),也就是前面所写的计数器模式。
第三部分输入捕获:对应的每一个通用定时器,例如:TIMx_CH1产生的TI1,经过输入滤波器和边沿检测器进行捕获,每次捕获之后都要通计数器的值进行比较从而产生一些时间,分别捕获上升沿和下降沿从而知道上升沿到下降沿的时间长度是多少。
第四部分输出比较:例如计数器向下计数,捕获比较捕获一个值然后与比较寄存器的值进行比较,若大于则产生高电平,小则产生低电平。这样就会产生输出高低电平。
第五部分捕获比较:类似于一个连接器,连接了计数器和输入,并相互比较并捕获,然后输出。
五、计数时钟的选择
计数器的时钟有8种选择:
1、内部RCC提供的时钟:TIMxCLK
2、内部触发输入口1~4:ITR1/ITR2/ITR3/ITR4 用一个定时器作为另一个定时器设的分频器
3、外部捕获比较引脚:引脚1:TI1FP1或TI1F_ED 引脚2:TI2FP2
4、外部引脚:ETR 使能/禁止位 可编程设定极性 4位外部触发过滤器 外部触发分频器:分频器关闭、二分频、四分频、八分频
六、时基单元
1、计数器寄存器(TIMx_CNT)
向上计数、向下计数或者中心对齐计数
2、预分频器寄存器(TIMx_PSC)
可将时钟频率按1~65536之间的任意值进行分频,可在运行时改变其设置值
3、自动重装载寄存器(TIMx_ARR)
如果TIM1_CR1寄存器中的ARPE位为0,ARR寄存器的内容将直接写入影子寄存器;如果ARPE为1,ARR寄存器的内容将在每次的更新事件UEV发生时,传送到影子寄存器;
如果TIM1_CR1中的UDIS位为0,当计数器产生溢出条件时,产生更新事件。
STM32——通用定时器相关推荐
- STM32通用定时器(原理、结构体、库函数、定时器中断每秒闪烁一次灯) —— 时钟源、分频值、重装载值
参考:stm32定时器与定时器中断 作者:打酱油的 发布时间: 2021-04-11 01:04:09 网址:https://blog.csdn.net/weixin_46098612/article ...
- STM32 通用定时器原理介绍
一.STM32 通用定时器简介 STM32F1 的通用定时器是一个通过可编程预分频器(PSC)驱动的 16 位自动装载计数器 (CNT)构成.STM32 的通用定时器可以被用于:测量输入信号的脉冲长度 ...
- stm32通用定时器用做外部脉冲计数器的例程
最近几天要用到stm32对外部输入脉冲进行计数,很自然想到定时器,可是手上资料没有讲解stm32定时器如何用作外部计数器的,在网上找例程,也没找到几个正确的,自己硬着头皮仔细研究参考手册,终于知道如何 ...
- STM32通用定时器输出PWM控制舵机 —— 重装载值、比较值、当前值
参考:stm32 定时器输出PWM原理及工作原理+控制舵机 作者:点灯小哥 发布时间: 2021-03-09 23:17:52 网址:https://blog.csdn.net/weixin_4601 ...
- STM32 通用定时器基本原理
STM32F10x系列总共最多有8个定时器: 三种STM32定时器区别: 通用定时器功能特点描述: ①. STM32 的通用 TIMx (TIM2.TIM3.TIM4 和 TIM5)定时器功能特点包括 ...
- STM32通用定时器实现us微秒延时
为了获取精确延时,STM32芯片中往往会使用内核中的嘀嗒时钟Systick作为参考时钟.当嘀嗒时钟被占用做其他用途时,比如RTOS中的节拍器:就需要采用其他方法进行延时. 这里提出一种采用通用定时器作 ...
- STM32通用定时器输出带死区互补PWM/任意移相PWM
项目上遇到了多个通道的带死区的互补功能,单纯靠H7的TIM1/TIM8/TIM15/TIM16/TIM17几个硬件自带的死区互补还不够,本文就使用通用定时器TIM2/TIM3/TIM4/TIM5来实现 ...
- stm32通用定时器1s延时实现LED闪烁
stm32有很多定时器,每种定时器的功能也不尽相同,今天学习了如何用通用定时器实现1s延时,使LED灯闪烁,现总结如下: 步骤总结: 使能定时器时钟->配置定时器结构体->清空定时器标志位 ...
- STM32通用定时器基本原理
参考正点原子视频 STM32定时器 共有 8 个定时器,分为基本定时器,通用定时器和高级定时器.基本定时器 TIM6 和 TIM7 是一个 16 位的只能向上计数的定时器,只能定时,没有外部 IO.通 ...
最新文章
- ASP.NET性能调整之解决Server Too Busy错误
- 关于学习数据库的一点总结
- Solaris IPMP 配置
- JBoss Fuse 6.2发布–指导如何快速尝试
- Confluence 6 附件存储文件系统的分级
- 全绿色版影视电影小程序源码-提供苹果CMS接口
- 非编程人学Python,要注意哪些隐秘的错误认知?
- 程序员面试智力题集锦
- 你就是北上广深的树先生
- 退出CrOS Factory,进入正常Chrome OS
- 北科大计算机学院何杰,北京科技大学计算机科学与技术系硕士生导师何杰_计算机考研导师...
- 你知道什么是大数据的核心吗?
- 燃烧的远征服务器排队小程序,请排队-在线排队叫号微信小程序
- Nodejs爬虫自动爬取百度图片
- win10计算机怎么打开方式,Win10如何还原打开方式?还原打开方式的方法
- python 离散数学 判断单射 双射 满射
- Error: Index .kibana belongs to a version of Kibana that cannot be automatically migrated. Reset it
- word之表格如何自动换页?
- TravelFlan携小猴问问亮相ITB,看人工智能如何化解旅游痛点
- python爬取微信好友_如何用 Python 爬取自己的微信朋友