TIM—高级定时器
本章参考资料:《 STM32F4xx 参考手册》、《 STM32F4xx 规格书》、库帮助文档
《 stm32f4xx_dsp_stdperiph_lib_um.chm》。
学习本章时,配合《 STM32F4xx 参考手册》高级定时器章节一起阅读,效果会更佳,
特别是涉及到寄存器说明的部分。
特别说明,本书内容是以 STM32F42x 系列控制器资源讲解。
上一章我们讲解了基本定时器功能,基本定时器功能简单,理解起来也容易。高级控
制定时器包含了通用定时器的功能,再加上已经有了基本定时器基础的基础,如果再把通
用定时器单独拿出来讲那内容有很多重复,实际效果不是很好,所以通用定时器不作为独
立章节讲解,可以在理解了高级定时器后参考《 STM32F4xx 中文参考手册》通用定时器章
节内容理解即可。
高级控制定时器(TIM1 和 TIM8)和通用定时器在基本定时器的基础上引入了外部引脚,
有输入捕获和输出比较功能。高级控制定时器比通用定时器增加了可编程死区互补输出、
重复计数器、带刹车(断路)功能,这些功能都是针对工业电机控制方面。
高级控制定时器时基单元包含一个 16 位自动重载计数器 ARR,一个 16 位的计数器
CNT,可向上/下计数,一个 16 位可编程预分频器 PSC,预分频器时钟源有多种可选,有
内部的时钟、外部时钟。还有一个 8 位的重复计数器 RCR,这样最高可实现 40 位的可编程定时。
高级定时器功能简介
1-计数器16bit,上/下/两边 计数,TIM1和TIM8,还有一个重复计数器RCR,独有。
2-有4个GPIO,其中通道1~3还有互补输出GPIO
3-时钟来自PCLK2,可实现1~65536分频
这个问题在基本定时器已经解释过了,这里不再赘述。
具体步骤解释可以参见零死角书籍。
测量脉宽或者频率
测量频率
当捕获通道 TIx 上出现上升沿时,发生第一次捕获,计数器 CNT 的值会被锁存到捕获
寄存器 CCR 中,而且还会进入捕获中断,在中断服务程序中记录一次捕获(可以用一个标
志变量来记录),并把捕获寄存器中的值读取到 value1 中。当出现第二次上升沿时,发生
第二次捕获,计数器 CNT 的值会再次被锁存到捕获寄存器 CCR 中,并再次进入捕获中断,
在捕获中断中,把捕获寄存器的值读取到 value3 中,并清除捕获记录标志。利用 value3 和
value1 的差值我们就可以算出信号的周期(频率)。
测量脉宽
当捕获通道 TIx 上出现上升沿时,发生第一次捕获,计数器 CNT 的值会被锁存到捕获
寄存器 CCR 中,而且还会进入捕获中断,在中断服务程序中记录一次捕获(可以用一个标
志变量来记录),并把捕获寄存器中的值读取到 value1 中。然后把捕获边沿改变为下降沿
捕获,目的是捕获后面的下降沿。当下降沿到来的时候,发生第二次捕获,计数器 CNT 的
值会再次被锁存到捕获寄存器 CCR 中,并再次进入捕获中断,在捕获中断中,把捕获寄存
器的值读取到 value3 中,并清除捕获记录标志。然后把捕获边沿设置为上升沿捕获。
在测量脉宽过程中需要来回的切换捕获边沿的极性,如果测量的脉宽时间比较长,定时器就会发生溢出,溢出的时候会产生更新中断,我们可以在中断里面对溢出进行记录处理。
PWM 输入模式
测量脉宽和频率还有一个更简便的方法就是使用 PWM 输入模式。与上面那种只使用
一个捕获寄存器测量脉宽和频率的方法相比, PWM 输入模式需要占用两个捕获寄存器。
当使用 PWM 输入模式的时候,因为一个输入通道(TIx)会占用两个捕获通道(ICx),所
以一个定时器在使用 PWM 输入的时候最多只能使用两个输入通道(TIx)。
PWM 输出模式
PWM 输出就是对外输出脉宽(即占空比)可调的方波信号,信号频率由自动重装寄
存器 ARR 的值决定,占空比由比较寄存器 CCR 的值决定。
关于这一节,有很多的地方没有详细列出重点,这里太傅哦关乎到寄存器的东西,而研究一个芯片的寄存器很费时间,如果以后项目需要,回看手册。
TIM—高级定时器的更多相关文章
- 第32章 TIM—高级定时器—零死角玩转STM32-F429系列
第32章 TIM—高级定时器 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.com/fire ...
- STM32 TIM高级定时器死区时间的计算
STM32 TIM高级定时器的互补PWM支持插入死区时间,本文将介绍如何计算以及配置正确的死区时间. 文章目录 什么是死区时间? 数据手册的参数 如何计算合理的死区时间? STM32中配置死区时间 什 ...
- Stm32高级定时器(三)
Stm32高级定时器(三) 1 互补输出和死区插入 1.1 死区:某个处于相对无效状态的时间或空间 本来OCX信号与OCXREF时序同相同步,OCXN信号与OCXREF时序反相同步.但为了安全考虑,以 ...
- stm32f103_高级定时器——输入捕获/输出比较中断+pwm=spwm生成
****************************首选我们了解一下它们的功能吧********************************************************** ...
- TIM—基本定时器
本章参考资料:< STM32F4xx 参考手册>.< STM32F4xx 规格书>.库帮助文档< stm32f4xx_dsp_stdperiph_lib_um.chm&g ...
- 第31章 TIM—基本定时器—零死角玩转STM32-F429系列
第31章 TIM—基本定时器 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.com/fire ...
- TIM—基本定时器代码
使用目的:使用TIM定时器让小灯每0.5秒翻转一次亮灭 编程过程: 1-配置时基初始化结构体 2-开启定时器更新中断(即定时时间到了) 3-配置中断优先级 4-使能定时器 5-编写中断服务函数 6-编 ...
- STM32 TIM1高级定时器RCR重复计数器的理解
STM32 TIM1高级定时器RCR重复计数器的理解 TIMx_RCR重复计数器寄存器,重复计数器只支持高级定时器TIM1和TIM8,下面看标准外设库的TIM结构体的封装: typedef struc ...
- 关于普通定时器与高级定时器的 PWM输出的初始化的区别
不管是普通定时器还是高级定时器,你用哪个通道,就在程序里用OC多少.比如CH3对应OC3 TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1; TIM_ ...
随机推荐
- laravel5.1安装
Laravel 于6月9日正式发布了 5.1 最新 LTS 版本.这是 Laravel 历史上第一个提供 LTS(长期支持 - long-time support) 支持的版本. 首先使用Larave ...
- 【Linux】shell判空
在shell中如何判断一个变量是否为空 博客分类: Ubuntu / Mac / Github / Aptana / Nginx / Shell / Linux 在shell中如 ...
- Java最大的优势真的在于跨平台吗?
下面讨论仅仅针对PC端和移动端. 曾经是,但如今已经不是了. 有跨平台需求的仅仅是client应用.而不是服务端.比如桌面应用,你的客户可能是Windows用户.也可能是Linux用户,这时候假设不想 ...
- MySQL中删除数据的两种方法
转自:http://blog.csdn.net/apache6/article/details/2778878 1. 在MySQL中有两种方法可以删除数据: 一种是delete语句,另一种是trunc ...
- (C++)虚函数表解析(转)
(文章出处不详,转自:http://blog.csdn.net/hairetz/article/details/4137000) C++中的虚函数的作用主要是实现了多态的机制.关于多态,简而言之就是用 ...
- Pureftp SSL/TLS配置
一.准备 & 安装 启用 Pure-FTPd SSL/TLS 连接方式在安装时需要检查以下两项: 1.系统中是否已经安装了 openssl 和 openssl-devel 包? 2.在编译 P ...
- Activity与Service通信
Activity与Service通信的方式有三种: 继承Binder类 这个方式只有当你的Acitivity和Service处于同一个Application和进程时,才可以用,比如你后台有一个播放背景 ...
- linux嵌入式系统交叉开发环境
交叉开发的特点是使用交叉开发环境编译出目标机上可以运行的二进制程序. tool chain就是一整套的交叉开发工具,包括cross assembler.cross compiler. cross li ...
- Ajv JSON数据格式校验 使用
1.官网 https://ajv.js.org/ 2.示例代码 <!DOCTYPE html> <html lang="zh"> <head> ...
- js中ip地址与整数的相互转换
转载地址 //IP转成整型function _ip2int(ip) { var num = 0; ip = ip.split("."); num = Number ...