7、TIM定时器使用介绍
文章目录
- 1、TIM定时器的相关寄存器介绍
- 2、输入捕获模式的介绍
- 1)PWM 输入信号测量
- 2)PWM信号的周期测量示例
- 3、输入捕获测量初始化的一般流程
- 4、参考代码
1、TIM定时器的相关寄存器介绍
- 输入捕获单元组成
状态寄存器 1 (TIM1_SR1)
若发生驳货事件,状态寄存器1(TIM1_SR1)中相应的CCxIF标志位会被置“1”,表示计数值已被捕获至 捕获/比较寄存器(TIM1_CCRx)中。
若状态寄存器1(TIM1_SR1)中的CCxIF标志位被置“1”后,又发生了一次捕获事件,则状态寄存器2(TIM1_SR2)中的CCxOF会被置1,以表示发生了重复的捕获事件。
2、输入捕获模式的介绍
在输入捕获模式下,当检测到ICi信号上相应的边沿后,计数器的当前值被锁存到捕获/比较寄存
器(TIM1_CCRx)中。当发生捕获事件时,相应的CCiIF标志(TIM1_SR寄存器)被置1。
如果TIM1_IER寄存器的CCiIE位被置位,也就是使能了中断,则将产生中断请求。如果发生捕
获事件时CCiIF标志已经为高,那么重复捕获标志CCiOF(TIM1_SR2寄存器)被置1。写CCiIF=0
或读取存储在TIM1_CCRiL寄存器中的捕获数据都可清除CCiIF。写CCiOF=0可清除CCiOF。
以下例子说明如何在TI1输入的上升沿时捕获计数器的值到TIM1_CCR1寄存器中,步骤如下:
- 选择有效输入端:例如TIM1_CCR1连接到TI1输入,所以写入TIM1_CCR1寄存器中的
CC1S=01,此时通道被配置为输入,并且TIM1_CCR1寄存器变为只读。 - 根据输入信号TIi的特点,可通过配置TIM1_CCMRi寄存器中的ICiF位来设置相应的输入滤
波器的滤波时间。假设输入信号在最多5个时钟周期的时间内抖动,我们须配置滤波器的带
宽长于5个时钟周期;因此我们可以连续采样8次,以确认在TI1上一次真实的边沿变换,即
在TIMi_CCMR1寄存器中写入IC1F=0011,此时,只有连续采样到8个相同的TI1信号,信
号才为有效(采样频率为f MASTER )。 - 选择TI1通道的有效转换边沿,在TIM1_CCER1寄存器中写入CC1P=0(上升沿)。
- 配置输入预分频器。在本例中,我们希望捕获发生在每一个有效的电平转换时刻,因此预
分频器被禁止(写TIM1_CCMR1寄存器的IC1PS=00)。 - 设置TIM1_CCER1寄存器的CC1E=1,允许捕获计数器的值到捕获寄存器中。
- 如果需要,通过设置TIM1_IER寄存器中的CC1IE位允许相关中断请求。
当发生一个输入捕获时:
● 当产生有效的电平转换时,计数器的值被传送到TIM1_CCR1寄存器。
● CC1IF标志被设置(中断标志)。当发生至少2个连续的捕获时,而CC1IF未曾被清除时,
CC1OF也被置1。
● 如设置了CC1IE位,则会产生一个中断。
为了处理捕获溢出(CC1OF位),建议在读出重复捕获标志之前读取数据,这是为了避免丢失在
读出捕获溢出标志之后和读取数据之前可能产生的重复捕获信息。
1)PWM 输入信号测量
该模式是输入捕获模式的一个特例,除下列区别外,操作与输入捕获模式相同:
● 两个ICi信号被映射至同一个TIi输入。
● 这两个ICi信号的有效边沿的极性相反。
● 其中一个TIiFP信号被作为触发输入信号,而触发模式控制器被配置成复位触发模式。
2)PWM信号的周期测量示例
例如,你可以用以下方式测量TI1上输入的PWM信号的周期(TIM1_CCR1寄存器)和占空比(TIM1_CCR2寄存器)。(具体取决于f MASTER 的频率和预分频器的值)
- 选择TIM1_CCR1的有效输入:置TIM1_CCMR1寄存器的CC1S=01(选中TI1)。
- 选择TI1FP1的有效极性(用来捕获数据到TIM1_CCR1中和清除计数器):置CC1P=0(上升沿
有效)。 - 选择TIM1_CCR2的有效输入:置TIM1_CCMR2寄存器的CC2S=10(选中TI1FP2)。
- 选择TI1FP2的有效极性(捕获数据到TIM1_CCR2):置CC2P=1(下降沿有效)。
- 选择有效的触发输入信号:置TIM1_SMCR寄存器中的TS=101(选择TI1FP1)。
- 配置触发模式控制器为复位触发模式:置TIM1_SMCR中的SMS=100。
- 使能捕获:置TIM1_CCER1寄存器中CC1E=1,CC2E=1。
3、输入捕获测量初始化的一般流程
- 设置具体的输入通道,既 捕获/ 比较模式寄存器 (TIM1_CCMRx)的CCxS[1:0]位
- 设置信号采样率及滤波器,即 捕获/ 比较模式寄存器 (TIM1_CCMRx)的ICxF[3:0]位
- 设置信号边沿极性,既配置 捕获/ 比较使能寄存器 (TIM1_CCERx)的CCxP位
- 设置信号预分配因子,既 捕获/ 比较模式寄存器 (TIM1_CCMRx)的IC1PSC[1:0]位
- 使能捕获功能,既配置 捕获/ 比较使能寄存器 (TIM1_CCERx)的CCxE位
4、参考代码
两种初始化方式:
/****************************************************************/
//TIM1功能初始化函数my_init(),无形参,无返回值
/****************************************************************/
void my_init(void)
{//1.CC1通道被配置为输入,IC1映射在TI1FP1上“CC1S[1:0]=01”TIM1_CCMR1|=0x01;//2.配置信号边沿极性为TI1F或TI2F的低电平或下降沿“CC1P=1”TIM1_CCER1&=0xFD; //上升沿//3.CC2通道被配置为输入,IC2映射在TI1FP2上“CC2S[1:0]=10”TIM1_CCMR2|=0x02;//4.配置TI1FP2信号边沿极性为下降沿“CC2P=1”TIM1_CCER1|=0x20; //5.配置采样率为主时钟频率,无滤波器“IC1F[3:0]=0000”TIM1_CCMR1&=0x0F;//6.配置输入/捕获1通道预分频器因子为8分频“IC1PSC[1:0]=11”TIM1_CCMR1|=0x0C;//7.使能TIM1_CH1输入捕获功能“CC1E=1”TIM1_CCER1|=0x01;//8.使能TIM1计数器功能“CEN=1”TIM1_CR1|=0x01;}/****************************************************************/
//TIM1功能初始化函数TIM1_init(),无形参,无返回值
/****************************************************************/
void TIM1_init(void)
{//1.CC1通道被配置为输入,IC1映射在TI1FP1上“CC1S[1:0]=01”// 0x000000001 : CC1通道被配置为输入,IC1映射在TI1FP1上;TIM1_CCMR1|=0x01;//2.配置TI1FP1信号边沿极性为上升沿“CC1P=0”// 0x11111101 : 捕获发生在TI1F或TI2F的上升沿;TIM1_CCER1&=0xFD;//3.CC2通道被配置为输入,IC2映射在TI1FP2上“CC2S[1:0]=10”// 0x00000010 : CC2通道被配置为输入,IC1映射在TI2FP2上;TIM1_CCMR2|=0x02;//4.配置TI1FP2信号边沿极性为下降沿“CC2P=1”// 0x00100000 : 1:捕获发生在TI1F或TI2F的下降沿TIM1_CCER1|=0x20; //5.配置触发输入信号为TI1FP1,“TS[2:0]=101”// 0x01010000 : 选择用于选择同步计数器的触发输入,滤波后的定时器输入1(TI1FP1)TIM1_SMCR|=0x50;//6.配置触发模式为复位触发,“SMS[2:0]=100”// 0x00000100 : 复位模式 – 在选中的触发输入(TRGI)的上升沿时重新初始化计数器,并且产生一个更新寄存器的信号TIM1_SMCR|=0x04;//7.使能TIM1计数器功能“CEN=1”TIM1_CR1|=0x01;//没有设置在外部触发寄存器(TIM1_ETR)中的采样频率
}
7、TIM定时器使用介绍相关推荐
- 【STM32】TIM定时器
介绍: 定时器由可编程预分频器驱动的16位自动装载计数器构成. 定时器最基本功能:定时 定时发送 USART 数据 定时采集 AD 数据等 定时器与 GPIO 结合 测量输入信号脉冲宽度 产生输出波形 ...
- STM32入门笔记04_TIM定时器+案例:TIM定时器定时中断、定时器外部时钟
TIM定时器 TIM简介 TIM(Timer) 定时器 定时器可以对输入的时钟进行计数,并在计数值达到设定值时触发中断 16位计数器.预分频器.自动重装寄存器的时基单元,在72MHz(系统主频)计数时 ...
- STM32 TIM定时器的使用(1)——定时
1.定时器简介 STM32中,定时器的应用非常广泛,涉及计时.信号检测.电机控制等等,并且定时器章节的介绍在STM32F1的手册里面也占据了大量的篇幅,足以看出定时器的重要性. 我将会做5个实验来学习 ...
- 实现quartz定时器及quartz定时器原理介绍
今天研究定时器,在网上看了一篇不错的文章,推荐给大家! 实现quartz定时器及quartz定时器原理介绍
- 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打造联网气象站-4-STM32基础三件套-TIM定时器和SYSTICK初始化
STM32基础系列包含了三件套,掌握了这三件套,类似于掌握了程咬金三板斧,就可以开始干项目,创造价值了.毕竟,真正的编程是一项实战性很强的技术,掌握编程主要靠实战,而不是靠知识灌输. STM32的编程 ...
- stm32学习笔记 TIM定时器中断1.定时器基本定时功能(含代码)
TIM定时器分四个部分 目录 一.定时器基本定时功能 二.定时器输出比较功能 三.定时器输入捕获功能 四.定时器编码接口 一.定时器基本定时功能 RCC时钟树 SystmInit函数 外部晶振出问题会 ...
- LTE常用定时器参数介绍
一.接入类定时器 1.初始接入流程说明 主要受T300.T302定时器的影响: UE RRC连接建立请求消息是由UE的RRC层发起,并向MAC层发出随机接入指示以后,启动T300定时 ...
最新文章
- ai旋转扭曲_会了这些AI技巧:效率翻倍
- delphi和INNO SETUP 文件关联操作
- Django 模型与 Mysql 数据类型对应
- Python错误,pip安装包或更新时因超时而报错误
- 深圳市南山区派出所地址和电话列表
- OpenCV精进之路(三):图像处理——形态学滤波(膨胀、腐蚀、开闭运算)
- VS不能设置断点可能的一个原因
- baidu__git_android
- js模拟点击事件实现代码
- 学习面向对象的三条主线之三 面向对象的三大特征 关键字
- 嵌入式学习文章推荐+资料下载
- Hyperscan 5.4.0 安装教程 (CentOS7环境)
- android开发设置页面自适应横竖屏,android TV 竖屏页面开发
- 最长等差数列 leetcode java_51nod1055 最长等差数列
- 怎样用office Word2003打开docx格式文档???
- 那就祝你有数不尽的鲜花和浪漫
- Confidence Rekindles In Credit Mkts
- 银行排队信息预测系统数学建模
- 深度学习之(DNN)深度神经网络
- 百度搜索引擎接口测试报告
热门文章
- 私募基金合法吗?私募基金如何防风险?
- 闭包的形成,闭包的优点和缺点,闭包有哪些作用?
- 用MATLAB模拟三体运动的代码
- 用Ada提高安全性、保密性和可靠性
- 化工有害气体在线监测解决方案,还你安全放心的生产环境
- 在腾讯云服务器使用USBWebserver自建网站,网页打不开提示ERR_EMPTY_RESPONSE的解决办法
- 云服务器(五).nginx3.https关于ssl证书申请
- int *p = a、p = a、*p = a的正确理解
- Awk使用及网站日志分析
- MacOs Hadoop环境搭建 IDEA开发MapReduce程序及调试