文章目录

  • 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寄存器中,步骤如下:

  1. 选择有效输入端:例如TIM1_CCR1连接到TI1输入,所以写入TIM1_CCR1寄存器中的
    CC1S=01,此时通道被配置为输入,并且TIM1_CCR1寄存器变为只读。
  2. 根据输入信号TIi的特点,可通过配置TIM1_CCMRi寄存器中的ICiF位来设置相应的输入滤
    波器的滤波时间。假设输入信号在最多5个时钟周期的时间内抖动,我们须配置滤波器的带
    宽长于5个时钟周期;因此我们可以连续采样8次,以确认在TI1上一次真实的边沿变换,即
    在TIMi_CCMR1寄存器中写入IC1F=0011,此时,只有连续采样到8个相同的TI1信号,信
    号才为有效(采样频率为f MASTER )。
  3. 选择TI1通道的有效转换边沿,在TIM1_CCER1寄存器中写入CC1P=0(上升沿)。
  4. 配置输入预分频器。在本例中,我们希望捕获发生在每一个有效的电平转换时刻,因此预
    分频器被禁止(写TIM1_CCMR1寄存器的IC1PS=00)。
  5. 设置TIM1_CCER1寄存器的CC1E=1,允许捕获计数器的值到捕获寄存器中。
  6. 如果需要,通过设置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 的频率和预分频器的值)

  1. 选择TIM1_CCR1的有效输入:置TIM1_CCMR1寄存器的CC1S=01(选中TI1)。
  2. 选择TI1FP1的有效极性(用来捕获数据到TIM1_CCR1中和清除计数器):置CC1P=0(上升沿
    有效)。
  3. 选择TIM1_CCR2的有效输入:置TIM1_CCMR2寄存器的CC2S=10(选中TI1FP2)。
  4. 选择TI1FP2的有效极性(捕获数据到TIM1_CCR2):置CC2P=1(下降沿有效)。
  5. 选择有效的触发输入信号:置TIM1_SMCR寄存器中的TS=101(选择TI1FP1)。
  6. 配置触发模式控制器为复位触发模式:置TIM1_SMCR中的SMS=100。
  7. 使能捕获:置TIM1_CCER1寄存器中CC1E=1,CC2E=1。

3、输入捕获测量初始化的一般流程

  1. 设置具体的输入通道,既 捕获/ 比较模式寄存器 (TIM1_CCMRx)的CCxS[1:0]位
  2. 设置信号采样率及滤波器,即 捕获/ 比较模式寄存器 (TIM1_CCMRx)的ICxF[3:0]位
  3. 设置信号边沿极性,既配置 捕获/ 比较使能寄存器 (TIM1_CCERx)的CCxP位
  4. 设置信号预分配因子,既 捕获/ 比较模式寄存器 (TIM1_CCMRx)的IC1PSC[1:0]位
  5. 使能捕获功能,既配置 捕获/ 比较使能寄存器 (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定时器使用介绍相关推荐

  1. 【STM32】TIM定时器

    介绍: 定时器由可编程预分频器驱动的16位自动装载计数器构成. 定时器最基本功能:定时 定时发送 USART 数据 定时采集 AD 数据等 定时器与 GPIO 结合 测量输入信号脉冲宽度 产生输出波形 ...

  2. STM32入门笔记04_TIM定时器+案例:TIM定时器定时中断、定时器外部时钟

    TIM定时器 TIM简介 TIM(Timer) 定时器 定时器可以对输入的时钟进行计数,并在计数值达到设定值时触发中断 16位计数器.预分频器.自动重装寄存器的时基单元,在72MHz(系统主频)计数时 ...

  3. STM32 TIM定时器的使用(1)——定时

    1.定时器简介 STM32中,定时器的应用非常广泛,涉及计时.信号检测.电机控制等等,并且定时器章节的介绍在STM32F1的手册里面也占据了大量的篇幅,足以看出定时器的重要性. 我将会做5个实验来学习 ...

  4. 实现quartz定时器及quartz定时器原理介绍

    今天研究定时器,在网上看了一篇不错的文章,推荐给大家! 实现quartz定时器及quartz定时器原理介绍

  5. STM32学习笔记(四)丨TIM定时器及其应用(定时中断、内外时钟源选择)

    本篇文章包含的内容 一.TIM 定时器 1.1 TIM 定时器简介 1.2 TIM 定时器类型及其工作原理简介 1.2.1 基本定时器工作原理及其结构 1.2.2 通用定时器工作原理及其结构 1.2. ...

  6. STM32学习笔记(六)丨TIM定时器及其应用(输入捕获丨测量PWM波形的频率和占空比)

    本篇文章包含的内容 一.输入捕获 1.1 输入捕获简介 1.2 输入捕获通道的工作原理 1.3 输入捕获的主从触发模式 1.4 输入捕获和PWMI结构 二.频率的测量方法 2.1 测频法 2.2 测周 ...

  7. 每节课都是一个项目 手把手用STM32打造联网气象站-4-STM32基础三件套-TIM定时器和SYSTICK初始化

    STM32基础系列包含了三件套,掌握了这三件套,类似于掌握了程咬金三板斧,就可以开始干项目,创造价值了.毕竟,真正的编程是一项实战性很强的技术,掌握编程主要靠实战,而不是靠知识灌输. STM32的编程 ...

  8. stm32学习笔记 TIM定时器中断1.定时器基本定时功能(含代码)

    TIM定时器分四个部分 目录 一.定时器基本定时功能 二.定时器输出比较功能 三.定时器输入捕获功能 四.定时器编码接口 一.定时器基本定时功能 RCC时钟树 SystmInit函数 外部晶振出问题会 ...

  9. LTE常用定时器参数介绍

    一.接入类定时器 1.初始接入流程说明 主要受T300.T302定时器的影响:          UE RRC连接建立请求消息是由UE的RRC层发起,并向MAC层发出随机接入指示以后,启动T300定时 ...

最新文章

  1. ai旋转扭曲_会了这些AI技巧:效率翻倍
  2. delphi和INNO SETUP 文件关联操作
  3. Django 模型与 Mysql 数据类型对应
  4. Python错误,pip安装包或更新时因超时而报错误
  5. 深圳市南山区派出所地址和电话列表
  6. OpenCV精进之路(三):图像处理——形态学滤波(膨胀、腐蚀、开闭运算)
  7. VS不能设置断点可能的一个原因
  8. baidu__git_android
  9. js模拟点击事件实现代码
  10. 学习面向对象的三条主线之三 面向对象的三大特征 关键字
  11. 嵌入式学习文章推荐+资料下载
  12. Hyperscan 5.4.0 安装教程 (CentOS7环境)
  13. android开发设置页面自适应横竖屏,android TV 竖屏页面开发
  14. 最长等差数列 leetcode java_51nod1055 最长等差数列
  15. 怎样用office Word2003打开docx格式文档???
  16. 那就祝你有数不尽的鲜花和浪漫
  17. Confidence Rekindles In Credit Mkts
  18. 银行排队信息预测系统数学建模
  19. 深度学习之(DNN)深度神经网络
  20. 百度搜索引擎接口测试报告

热门文章

  1. 私募基金合法吗?私募基金如何防风险?
  2. 闭包的形成,闭包的优点和缺点,闭包有哪些作用?
  3. 用MATLAB模拟三体运动的代码
  4. 用Ada提高安全性、保密性和可靠性
  5. 化工有害气体在线监测解决方案,还你安全放心的生产环境
  6. 在腾讯云服务器使用USBWebserver自建网站,网页打不开提示ERR_EMPTY_RESPONSE的解决办法
  7. 云服务器(五).nginx3.https关于ssl证书申请
  8. int *p = a、p = a、*p = a的正确理解
  9. Awk使用及网站日志分析
  10. MacOs Hadoop环境搭建 IDEA开发MapReduce程序及调试