stm32学习笔记——通用计时器基本原理
stm32f10x最多有8个定时器,stm32f103zet6就有8个定时器,分别是4个通用定时器,2个高级定时器,2个基本定时器。
定时器种类 | 位数 | 计时器模式 | 产生DMA请求 | 捕获/比较通道 | 互补输出 | 特殊应用场景 |
---|---|---|---|---|---|---|
高级定时器 (TIM1,TIM8) |
16 | 向上,向下,向上/下 | 可以 | 4 | 有 | 带死区控制盒紧急刹车,可应用于PWM电机控制 |
通用定时器 (TIM2~TIM5) |
16 | 向上,向下,向上/下 | 可以 | 4 | 无 | 通用。定时计数,PWM输出,输入捕获,输出比较 |
基本定时器 (TIM6,TIM7) |
16 | 向上,向下,向上/下 | 可以 | 0 | 无 | 主要应用于驱动DAC |
通用定时器(TIM2~TIM5)功能特点描述:
- 位于低速的APB1总线上(可以使用来自APB1的时钟,也有其他始终来源)
- 16位向上、向下、向上/向下(中心对齐)计数模式,自动装载计数器(TIMx_CNT)
- 16位可编程(可以实时修改)预分频器(TIMx_PSC),计数器时钟频率的分频系数为(1~65535)之间的任意值
- 4个独立通道(TIMx_CH1~4),这些通道可以用来作为:
- 输入捕获
- 输出比较
- PWM生成(边缘或中间对齐模式)
- 单脉冲模式输出
- 可使用外部信号(TIMx_ETR)控制定时器和定时器互连(用1个定时器控制另一个定时器)的同步电路
- 如下事件发生时产生中断/DMA(6个独立的IRQ/DMA请求生成器):
- 更新:计数器向上/向下溢出,计数器初始化(通过软件或者内部/外部触发)
- 触发事件(计数器启动、停止、初始化或者由内部/外部触发计数)
- 输入捕获
- 输出比较
- 支持针对定位的增量(正交)编码器和霍尔传感器电路
- 触发输入作为外部时钟或者按周期的电流管理
- STM32的通用定时器可以被用于:测量输入信号的脉冲长度(输入捕获)或者产生输出波形(输出比较和PWM)等
- 使用定时器预分频器和RCC时钟控制预分频器,脉冲长度和波形周期可以在几个微秒到几个毫秒间调整。STM32的每个通用定时器都是完全独立的,没有互相共享的任何资源。
计数器模式
通用定时器可以向上计数,向下计数,向上向下双向计数模式
向上计数模式:计数器从0计数到自动加载值(TIMx_ARR),然后重新从0开始计数,并且产生一个计数器向上溢出事件。
向下计数模式:计数器从自动装载值(TIMx_ARR)开始向下计数到0,然后从自动装入的值重新开始,产生一个计数器向下溢出的时间。
中央对齐模式(向上/向下计数):计数器从0开始计数到自动装入的值-1,产生一个计数器溢出事件,然后向下计数到1并且产生一个计数器溢出事件;然后再从0开始重新计数。
通用定时器工作过程简略
定时器的时钟选择有内部时钟(APB1),外部时钟(2,3,4号定时器可以使用),其他定时器(ITRn)或者定时器通道(TIn)。
ITRn:定时器会产生一个TRGn的时钟发送到其他定时器作为ITRn或者发送到DAC/ADC。
TIn:来自TIMx_CHn引脚的电平,通过滤波和边沿检测等后产生的信号
引脚输入的电平除了作为TIn以外,还会经过选择、预分频,当捕获到上升沿(可以设置为下降沿)时,捕获/比较寄存器就会把CNT计数器中的值记下来,通过这种方法可以方便地测量脉冲地宽度。
每个定时器都有4个独立的通道,要么用作输入捕获,要么用作输出比较。输出比较的功能比如,CNT计数器会跟捕获/比较寄存器中的值进行比较,如果更大通道输出高电平,更小通道输出低电平。
如果选择内部时钟APB1,那么APB1的预分频系数为1则通用定时器时钟为36MHz,APB1的预分频系数不为1,那么就为72MHz。
TIMx_PSC的预分频系数在此基础上再进行分频。
常用库函数:
void TIM_TimeBaseInit();//初始化
void TIM_Cmd();//使能
void TIM_ITConfig();//中断使能
FlagStatus TIM_GetFlagStatus();//标志位获取
void TIM_ClearFlag();//标志位清除
ITStatus TIM_GetITStatus();//中断标志位获取
void TIM_ClearITPendingBit();//挂起状态标志位清除
定时器中断实现步骤:
- 使能定时器时钟(和之前的内容一样调用APB1的使能函数)
- 初始化定时器,配置ARR(重装载寄存器),PSC(预分频系数)
- 开启定时器中断,配置NVIC(调用中断使能函数和NVIC初始化)
- 使能定时器
- 编写中断服务函数(TIMx_IRQHandler())
Tout(溢出时间) = (ARR+1)(PSC+1)/Tclk
stm32学习笔记——通用计时器基本原理相关推荐
- STM32学习笔记——通用定时器的PWM介绍及配置
脉冲宽度调制(PWM),是英文"Pulse Width Modulation"的缩写,简称脉宽调制,是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术.简单一点,就是 ...
- STM32学习笔记 通用定时器TIM3~TIM5 13
通用定时器TIM3~TIM5 TIM3~TIM5简介 通用定时器是一个通过可编程预分频器驱动的16位自动装载计数器构成. 它适用于多种场合,包括测量输入信号的脉冲长度(输入捕获)或者产生输出波形(输出 ...
- STM32学习笔记(10)——高级定时器TIM
前排提示:本笔记参考了野火PPT的大部分内容.本人初学定时器,倍感冗杂,有错烦请指出,谢谢! STM32学习笔记(10)--高级定时器TIM 一.时钟源 1. 内部时钟源 2. 外部时钟模式 1 (1 ...
- STM32学习笔记(四)丨TIM定时器及其应用(定时中断、内外时钟源选择)
本篇文章包含的内容 一.TIM 定时器 1.1 TIM 定时器简介 1.2 TIM 定时器类型及其工作原理简介 1.2.1 基本定时器工作原理及其结构 1.2.2 通用定时器工作原理及其结构 1.2. ...
- STM32学习笔记(六)丨TIM定时器及其应用(输入捕获丨测量PWM波形的频率和占空比)
本篇文章包含的内容 一.输入捕获 1.1 输入捕获简介 1.2 输入捕获通道的工作原理 1.3 输入捕获的主从触发模式 1.4 输入捕获和PWMI结构 二.频率的测量方法 2.1 测频法 2.2 测周 ...
- STM32学习笔记(八)丨ADC模数转换器(ADC单、双通道转换)
本篇文章包含的内容 一.ADC 模数转换器 1.1 ADC简介 1.2 逐次逼近型ADC工作原理 1.3 STM32中的ADC基本结构 1.4 STM32中ADC的输入通道 1.5 STM32中的AD ...
- STM32学习笔记:FLASH读写之二
因为关于STM32的Flash相关的知识点比较多,所以该内容的学习我们分为以下4个部分 1.RAM和ROM的一些基本概念 -- STM32学习笔记:FLASH读写之一 2.STM32的Flash寄存器 ...
- STM32学习笔记:FLASH读写之一
因为关于STM32的Flash相关的知识点比较多,所以该内容的学习我们分为以下4个部分 1.RAM和ROM的一些基本概念 -- STM32学习笔记:FLASH读写之一 2.STM32的Flash寄存器 ...
- STM32学习笔记——基于正点原子例程编码器模式小结
STM32学习笔记--基于正点原子例程编码器模式小结 最近一段时间学习了,STM32f4的编码器功能,经过自己探索和他人的热心帮助,对于编码器模式有了一定了解.STM32f4单片机提供编码器模式,以便 ...
最新文章
- 源码分析Handler机制
- 5、kafka的操作
- 从0到70%:Chrome上位揭秘!
- 打造“新基建”核心支柱 数据中心产业期待提速提质
- Qt图形界面编程入门(Qt的历史、Qt安装资源链接、Qt Creator简介)
- 以太坊ETH不能转账,状态一直是pending状态原因和解决方法
- 31. 了解各种与排序有关的选择
- Permission denied:通过共享复制,与打包后解压,目录权限不一样
- 【27】Python100例基础练习题6
- iOS11新增的Files文件管理器应用
- 附件英文计算机英语,详情请参见附件的英文说法
- 装饰工程预结算教程电子书_干货集 | 栏杆百叶工程预结算总结
- 小米ES Pro和X Pro对比有什么区别?哪个更值得入手
- finalcut剪切快捷键_Final Cut Pro X 常用快捷键大全 FCPX快捷键
- 千万不要嫁给程序猿,我是认真的
- LaTeX 入门-语法
- Linux---systemctl命令
- oracle 大表删除数据后,回收空间的问题。
- 揭秘开心农场开发团队:初期仅15万元创业基金
- 西安达刚公路机电科技有限公司董事长李太杰简介