[江科大STM32]-TIM定时器中断(学习笔记)上

TIM简介 

TIM(Timer)定时器

定时器可以对输入的时钟进行计数,并在计数值达到设定值时触发中断

16位计数器、预分频器、自动重装寄存器的时基单元,在72MHz计数时钟下可以实现最大59.65s的定时

预分频器:可以对计数器的时钟进行分频,让计数更加灵活 

不仅具备基本的定时中断功能,而且还包含内外时钟源选择、输入捕获、输出比较、编码器接口、主从触发模式等多种功能

根据复杂度和应用场景分为了高级定时器、通用定时器、基本定时器三种类型 

 TIM(Timer)定时器工作原理:

TIM(Timer)定时器是一种计时器,在微控制器中常用于产生精确的定时或延时操作。它的工作原理可以简单分为以下几个步骤:

1. **时钟源选择**:定时器通常由微控制器的时钟源提供时钟信号。时钟源可以是内部的时钟信号或外部的时钟信号,根据应用需求选择不同的时钟源。

2. **计数器**:TIM定时器内部有一个计数器,用来记录经过的时钟周期数。计数器会根据时钟信号的频率不断增加。

3. **预设值设置**:在初始化时,需要设定一个预设值来决定定时器的计数周期,也就是定时器溢出前的计数次数。一旦计数器累计到预设值,定时器会产生一个定时中断。

4. **中断处理**:当定时器溢出时,会触发中断请求,通知微控制器进行相应的处理。在中断服务程序中,可以执行特定的操作,比如更新某些变量、切换任务、生成PWM波形等。

5. **重载**:在中断服务程序中可以重新加载预设值,使定时器不断工作,实现循环定时功能。

总的来说,TIM定时器通过不断累计时钟周期来实现计时功能,并在计数达到预设值时产生中断,从而实现精确的定时功能。

定时器类型 

注意:STM32F103C8T6定时器资源:TIM1、TIM2、TIM3、TIM4 

 不同型号,定时器的数量不一样,操作外设之前要查清楚是否有这个外设。

基本定时器结构图: 

 时基单元

可编程通用定时器的主要部分是一个16位计数器和与其相关的自动装载寄存器。这个计数器可以向上计数、向下计数或者向上向下双向计数。此计数器时钟由预分频器分频得到。计数器、自动装载寄存器和预分频器寄存器可以由软件读写,在计数器运行时仍可以读写。时基单元包含:

● 预分频器寄存器 (TIMx_PSC)

预分频器描述:预分频器可以将计数器的时钟频率按1到65536之间的任意值分频。它是基于一个(在TIMx_PSC寄存器中的)16位寄存器控制的16位计数器。这个控制寄存器带有缓冲器,它能够在工作时被改变。新的预分频器参数在下一次更新事件到来时被采用。

● 计数器寄存器(TIMx_CNT)

计数器由预分频器的时钟输出CK_CNT驱动,仅当设置了计数器TIMx_CR1寄存器中的计数器使能位(CEN)时, CK_CNT才有效。 (有关计数器使能的细节,请参见控制器的从模式描述)。

 对预分频后的计数时钟进行计数,计数时钟每来一个上升沿,计数器的值就加1,这个计数器也是16位的,所以里面的值可以从0一直加到65535。如果再加,计数器就会回到0重新开始,所以计数器的值会不停的自增运行,当自增到目标值时,产生中断,就完成了定时任务。现在还需要一个存储目标值的寄存器,那就是自动重装载器。

注:真正的计数器使能信号CNT_EN是在CEN的一个时钟周期后被设置。

向上计数模式(掌握)

在向上计数模式中,计数器从0计数到自动加载值(TIMx_ARR计数器的内容),然后重新从0开始计数并且产生一个计数器溢出事件。(基本定时器仅支持这一种定时器模式,通用定时器和高级定时器支持则三种模式)

向下计数模式 (了解)

 在向下计数模式中,计数器自动装入的值(TIMx_ARR计数器的值)开始向下计数到0,然后从自动
装入的值重新开始并且产生一个计数器向下溢出事件。

 中央对齐模式(向上/向下计数)(了解)

 在中央对齐模式,计数器从0开始计数到自动加载的值(TIMx_ARR寄存器),产生一个计数器溢出事件,然后向下计数到1并且产生一个计数器下溢事件;然后再从0开始重新计数。

 ● 自动装载寄存器 (TIMx_ARR) 

自动重装载寄存器也是十六位的,它存的就是我们写入的计数目标,在运行的过程中,计数器不断的自增,自动重装值是固定的目标,当计数值等于自动重装载值时,计时时间就开始。那它就会产生一个中断信号,并且清零计数器,计数器自动开始下一次的计数计时。        

自动装载寄存器是预先装载的,写或读自动重装载寄存器将访问预装载寄存器。根据在TIMx_CR1寄存器中的自动装载预装载使能位(ARPE)的设置,预装载寄存器的内容被立即或在每次的更新事件UEV时传送到影子寄存器。当计数器达到溢出条件(向下计数时的下溢条件)并当TIMx_CR1寄存器中的UDIS位等于’0’时,产生更新事件。更新事件也可以由软件产生。

通用定时器框图:

 

ETR引脚位置可参考引脚定义表: 

 

高级定时器:

定时中断基本结构 

预分频器时序

缓冲寄存器相当于影子寄存器,这才是真正起作用的寄存器,比如上面在某个时刻,把预分频寄存器由0变到1,如果在此时,立刻改变时钟的分频系数,那么就会导致在一个周期内,前半部分和后半部分的频率不一样,这里计数记到一半,计数频率突然就会改变了。STM32设计比较严谨,设计了缓冲寄存器,这样当我计数记到一半的时候,改变了分频值,这个变化不会立即生效,而是等到本次计数周期结束时,产生了更新事件,预分频控制寄存器的值才会传递到预分频缓冲器里面去,才会生效。所以这里我们看到,即使我们在计数中途改变了预分频值,计数器寄存器仍然会保持原来的频率,直到本轮计数完成,在下一轮计数时,改变后的分频值才会起作用。

预分频缓存器也是靠计数器来分频的,当预分频值为0时,预分频计数器也一直为0,直接输出原频率,当预分频值为1时,计数器才01010101这样计数,在回到0的时候输出一个脉冲,这样输出频率就是输入频率的二分频。预分频器的值与实际分频系数之间就会有一个值的偏移。

计数器时序 

 

公式讲解

计数器无预装时序(无缓冲寄存器)

 无预装时序

 

计数器有预装时序(有缓冲寄存器)

 有预装时序

 

 RCC时钟树

RCC(Reset and Clock Control)模块是嵌入式系统中常见的一个模块,用于控制系统的复位和时钟。时钟树则是指系统中所有时钟信号的传输路径组成的结构。在嵌入式系统设计中,对于时钟树的设计和优化是非常重要的,可以影响系统的性能和功耗。

RCC模块通常会控制系统中各个模块的时钟信号,包括CPU、外设和其他核心组件。它可以配置时钟源、时钟分频和时钟输出等参数,确保系统各个模块之间的时钟信号能够同步和协调工作。

在设计时钟树时,需要考虑以下几个方面:

  1. 选择合适的时钟源:时钟源的质量和稳定性会直接影响系统的性能和稳定性。常见的时钟源包括晶体振荡器、PLL(Phase-Locked Loop)等。
  2. 时钟分频和时钟树结构:通过合理的时钟分频和时钟树结构设计,可以减少时钟信号的传输延迟和功耗,提高系统的性能和效率。
  3. 时钟信号的布线和阻抗匹配:布线过程中需要考虑时钟信号的传输路径长度、走线方式和阻抗匹配,确保时钟信号的传输质量和稳定性。

总的来说,优化RCC时钟树设计是一个复杂的工程任务,需要综合考虑系统的性能、功耗和稳定性等因素,确保系统能够正常高效地运行。

 

SystemInit函数里,ST配置时钟顺序,首先选择内部时钟8MHz为系统时钟,暂时以内部8MHz内部时钟运行,然后再启动外部时钟,配置外部时钟走下一路,进入PLL锁相环进行倍频,8MHz倍频9倍,得到72MHz,等到锁相环输出稳定后,选择锁相环输出为系统时钟。这样就把系统时钟由8MHz切换为72MHz。 

基本定时器、通用定时器、高级定时器的内部基准时钟频率都是72MHz。

时钟安全系统通常用于监控和保护计算机系统的时钟和时间信息,以防止时间漂移、时钟漂移攻击、时间篡改等恶意行为。其功能包括但不限于:

  1. 时钟同步:确保计算机系统的时钟与外部时间源同步,以避免时间不一致导致的问题。

  2. 时钟验证:验证系统时钟的准确性,防止被篡改或恶意调整。

  3. 时钟监控:监控计算机系统的时钟运行状态,及时发现异常情况并采取相应措施。

  4. 时间戳:为系统中的事件和数据提供准确的时间戳,确保事件的顺序和发生时间可信。

  5. 时钟漂移检测和修正:监测和修正系统时钟的漂移,保持时钟的准确性和稳定性。

  6. 安全日志记录:记录时钟相关的安全事件和操作,提供审计和追踪功能。

  7. 防止时钟攻击:防范时钟漂移攻击、时钟偏移攻击等恶意行为,确保系统的安全性和可靠性。

  8. 时间权限管理:对不同用户或系统组件的时间访问权限进行管理和控制,防止恶意篡改时间信息。

时钟安全系统的功能旨在确保系统时间的准确性、可靠性和安全性,保护计算机系统免受时钟相关的恶意攻击和干扰。

 时钟选择

 

         外部时钟源模式1

当TIMx_SMCR寄存器的SMS=111时,此模式被选中。计数器可以在选定输入端的每个上升沿或下降沿计数

  

活动发起人@小虚竹 想对你说: 

这是一个以写作博客为目的的创作活动,旨在鼓励大学生博主们挖掘自己的创作潜能,展现自己的写作才华。如果你是一位热爱写作的、想要展现自己创作才华的小伙伴,那么,快来参加吧!我们一起发掘写作的魅力,书写出属于我们的故事。我们诚挚邀请你参加为期14天的创作挑战赛!

提醒:在发布作品前,请将不需要的内容删除。

作者:傍晚冰川

物联沃分享整理
物联沃-IOTWORD物联网 » [江科大STM32]-TIM定时器中断(学习笔记)上

发表回复