内部时钟
一、高速内部时钟(HSI)
- 定义:HSI是高速内部时钟信号,由RC振荡器产生。
- 频率:通常为8MHz或16MHz(不同型号的STM32可能有所不同,但8MHz更为常见)。
- 用途:HSI可以作为系统时钟(SYSCLK)的源,也可以作为PLL(锁相环)的输入时钟。当外部时钟源不可用时,HSI将作为系统的备用时钟源。
二、低速内部时钟(LSI)
- 定义:LSI是低速内部时钟,同样由RC振荡器产生。
- 频率:通常为40kHz左右(具体频率可能因型号而异)。
- 用途:LSI主要用于提供低功耗时钟,通常作为独立看门狗(IWDG)的时钟源,也可以作为RTC(实时时钟)的时钟源(但RTC更常使用LSE作为时钟源)。
三、时钟系统概述
STM32的时钟系统非常复杂,但基本上可以看作是一个由多个时钟源、时钟树和分频器组成的网络。时钟信号推动单片机内各个部分执行相应的指令,就像人的心跳一样。STM32的时钟系统具有以下特点:
- 多个时钟源:除了HSI和LSI之外,还有高速外部时钟(HSE)、低速外部时钟(LSE)以及PLL倍频输出时钟。
- 时钟树:时钟信号从时钟源出发,经过一系列的分频和倍频操作后,最终到达各个外设。这个过程中,时钟信号可能会经过多个分频器和倍频器,以产生不同频率的时钟信号来满足不同外设的需求。
- 时钟配置:STM32的时钟配置通常通过寄存器操作来完成。在STM32的启动过程中,会首先执行一个名为SystemInit的函数来初始化时钟系统。这个函数会根据芯片的具体型号和配置来设置各个时钟源的频率和分频系数。
通用/高级定时器结构
注:TI1_ED为双边沿触发(上升/下降)
分类
STM32的定时器根据复杂度和应用场景主要分为三种类型:
- 基本定时器:功能相对简单,主要用于定时功能,同时也可驱动数模转换器(DAC)。典型代表有TIM6和TIM7。
- 通用定时器:在基本定时器的基础上进行了功能扩展,除了基本的定时功能外,还支持内外时钟源选择、输入捕获、输出比较、编码器接口以及主从触发模式等功能。
- 高级定时器:功能最为强大,包含了通用定时器的全部功能,并额外增加了如重复计数器、死区生成、互补输出以及刹车输入等专为工业电机设计的功能。
原理
定时器的主要部分是一个带有自动重装载功能的16位累加计数器。计数器的时钟信号通过预分频器得到,可以根据需要对时钟频率进行分割,从而得到一个新的输出时钟频率。计数器寄存器(TIMx_CNT)、预分频器寄存器(TIMx_PSC)以及自动重装载寄存器(TIMx_ARR)共同组成一个时基单元。
当计数器开始计数时,它会根据时钟信号的频率逐渐累加。当计数器的值达到自动重装载寄存器的值时,会产生一个溢出中断,并将计数器的值重置为0(或某个预设值),然后重新开始计数。这个过程可以不断重复,从而实现定时功能。
功能
- 定时中断功能:通过配置定时器的相关寄存器,可以设置定时器的溢出时间。当定时器溢出时,会产生一个中断信号,通知CPU执行相应的中断服务程序。
- 内外时钟源选择:定时器可以选择内部时钟或外部时钟作为时钟源。内部时钟通常来自系统时钟,而外部时钟则可以通过定时器的外部引脚输入。
- 输入捕获功能:定时器可以捕获外部信号的边沿或电平变化,从而测量输入信号的频率、周期或脉冲宽度等参数。
- 输出比较功能:定时器可以输出PWM波形,通过配置定时器的输出比较寄存器,可以控制PWM波形的占空比和频率。
- 编码器接口:通用定时器和高级定时器还支持编码器接口功能,可以与外部编码器连接,用于测量旋转物体的角度、速度等参数。
- 主从触发模式:定时器可以配置为主模式或从模式。在主模式下,定时器的更新事件可以触发其他定时器的启动或重置。在从模式下,定时器可以响应其他定时器的触发信号。
应用
电机控制、测量系统、计时器、PWM输出等
输入滤波器(Clock Filter)
按照采样频率f输出脉冲,在检测阈值内若一直有信号则判定有效,反之则无。
f与内部时钟有关
功能
一般安装在电源与变频器输入电源线之间,主要用于抑制变频器产生的传导干扰和辐射干扰,同时具备共模和差模抑制能力。它主要用于对电磁环境要求较高的场合,以防止变频器工作时,其输入端对电网和其他设备产生干扰。
原理
基于信号处理和滤波理论。当一个信号进入系统时,可能受到外部干扰、噪声或非期望频率成分的影响,这会导致系统性能下降或出现误差。输入滤波器通过设计合适的滤波器结构和参数,按照采样频率f发送脉冲,在检验阈值N内若持续有效则最终判定为有效,可将输入信号中的干扰和噪声滤除,得到清晰、稳定的信号。
循迹/黑白线模块/红外反射反射光电开关
原理
主要由红外发射器和接收器组成。发射器持续发出红外光,当没有物体遮挡时,光线不会反射回接收器;一旦有物体进入检测区,光线会被反射并回到接收器,此时开关会被激活,从而触发相应的控制动作。
高灵敏度、快速响应、安装简便、使用寿命长。
结构
发射器:通常由一个红外线发射管(如LED或激光二极管)组成,用于发射红外光。发射器还带有一个校准镜头,将光聚焦射向接收器。
接收器:由一个红外线接收管(如光电二极管或光电三极管)组成,用于接收反射回来的红外光。在接收器的前面,通常装有光学元件如透镜和光圈等,以提高接收效率。
检测电路:用于滤出有效信号并应用该信号,从而判断物体是否存在或位置等信息。
应用
计数,测速,门禁系统,智能家居,生产线等。
外部时钟模式2/ETR(External Trigger Input)
功能
允许定时器的计数与外部事件同步,通过将外部时钟信号输入到定时器的ETR引脚,让定时器根据外部事件的发生来计数或产生中断,从而实现更精确的定时控制。
原理
在外部时钟模式2下,定时器的时钟信号起始于ETR引脚。信号首先通过外部触发极性选择器(决定上/下降沿触发)随后,信号进入外部触发预分频器(预分频器的系数由相关寄存器位设置)接下来,信号可能会通过一个滤波器,以减少噪声干扰。最后,通过模式选择器确定定时器的时钟源。
配置步骤与注意事项
-
配置步骤:
-
将定时器的时钟源设置为外部时钟模式2。
-
配置ETR引脚的极性选择器,决定是上升沿触发、下降沿触发还是双边沿触发。
-
设置外部触发预分频器的系数。
-
根据需要配置滤波器。
-
-
注意事项:
-
确保ETR引脚上的信号质量良好,避免噪声干扰。
-
正确配置预分频器和滤波器,以满足应用需求。
-
在使用外部时钟模式2时,要注意定时器的其他配置参数,如计数模式、自动重载寄存器的值等,以确保定时器能够正常工作。
-
从模式Slave Mode
功能
负责协调不同定时器之间以及定时器与其他外设之间的工作关系。当系统中有多个定时任务或者需要定时器与其他功能模块紧密配合时,从模式控制器发挥着关键作用。它接收来自主定时器或其他外设的同步信号,然后根据设定的模式将该信号传递给从定时器,从而实现多个定时器的同步工作或精确控制定时操作。
配置方法
-
选择触发源:根据应用需求选择合适的触发信号源,并将其映射到定时器的TRGI引脚。
-
配置从模式:在定时器的配置寄存器中设置从模式的相关参数,如触发模式、门控模式等。
-
启动定时器:配置完成后,启动定时器以开始从模式的工作。
触发源
从模式需要选择触发信号源,即触发源选择。触发源可以是外部信号、其他定时器的输出或其他指定信号。
通过配置相关寄存器,可以选择特定的触发信号源,并将其映射到定时器的TRGI引脚。
模式选择
Reset Mode
功能
定时器在正常工作过程中,当接收到来自外部或内部的触发信号时,其计数器、预分频器以及自动重装载寄存器都会被复位到初始状态,相当于重新开始了定时器的计数周期。
原理
- 触发信号:触发信号可以来自定时器的内部或外部。内部触发信号可能由其他定时器或中断产生,而外部触发信号则通常通过定时器的ETR引脚输入。
- 复位操作:当触发信号满足设定的条件(如上升沿、下降沿或双边沿)时,定时器会执行复位操作。复位操作会将计数器的值清零,并可能触发定时器更新中断。
- 中断处理:如果启用了定时器的中断功能,复位操作会触发定时器更新中断。中断处理函数会执行相应的中断服务程序,以响应复位事件
Gated Mode
功能
时器的计数操作受到一个外部或内部门控信号的控制。当门控信号为高电平时,定时器开始计数;当门控信号为低电平时,定时器停止计数。
原理
- 门控信号:门控信号可以来自定时器的外部输入引脚(如ETR引脚)或内部其他定时器的输出。门控信号的极性(高电平或低电平有效)可以在配置时进行选择。
- 计数控制:当门控信号为高电平时,定时器开始计数,并按照设定的时钟源和预分频器进行递增或递减计数。当门控信号变为低电平时,定时器停止计数,并保持当前的计数值不变。如果门控信号再次变为高电平,定时器将从停止时的计数值继续计数。
- 中断与更新:在Gated Mode下,定时器的更新事件(如计数器溢出)可能受到门控信号的影响。如果门控信号在计数器溢出之前变为低电平,则更新事件可能不会被触发。因此,在配置定时器中断时,需要考虑门控信号对中断触发条件的影响。
Trigger Mode
功能
定时器会根据预设的触发条件(如信号电平、边沿变化等)来决定是否开始或停止计数。这种机制使得定时器能够在复杂的环境中准确地识别和响应特定的事件,从而实现精确的时间控制。
只能用于启动
原理
- 触发信号:触发信号可以来自定时器的内部或外部。内部触发信号可能由其他定时器或中断产生,而外部触发信号则通常通过定时器的ETR(External Trigger Input)引脚或其他输入通道输入。
- 触发条件:触发条件包括信号的电平(高电平或低电平)和边沿(上升沿、下降沿或双边沿)。这些条件可以在配置定时器时进行选择。
- 计数控制:当触发信号满足设定的触发条件时,定时器会开始或停止计数。具体是开始计数还是停止计数,取决于触发模式的配置(如复位模式、触发模式、门控模式等)以及定时器的当前状态。