ruru 在日常生活中随处可见定时功能的应用,交通灯定时转换各个信号灯,智能手表和手环的定时功能。我们把能够实现定时功能的电路单元称为定时器。那么定时器的工作原理是什么?又是如何实现的?
定时器工作原理
1:定时器和计数器
定时器通过内部时钟源或外部触发信号进行计时,到达预设时间后产生中断或输出信号。计数器用于记录脉冲或事件发生的次数。我们引入一个例子:一个杯子装水;装10秒装满,装1滴1秒;那么10秒为定时器,10滴为计数器。
2:定时器工作原理
定时器是一种用于在特定时间间隔后触发操作的设备或软件组件。其核心原理基于时间计数和触发机制,广泛应用于电子设备、计算机系统和工业控制等领域。硬件定时器通过振荡器(如晶体振荡器)产生稳定的时钟信号,计数器对时钟脉冲进行累加。当计数值达到预设阈值时,触发中断或输出信号。例如,555定时器通过外部电阻电容(RC电路)设定时间常数,计算公式为: [ T = 1.1 \times R \times C ] 其中 ( T ) 为定时周期,( R ) 为电阻值,( C ) 为电容值。

3:基本概念
(1)计数模式
对引脚输入的外部脉冲信号进行计数
(2)定时模式
对处理器内部的周期性时钟信号进行计数
(3)定时时钟
在定时模式下,输入定时器的周期性时钟信号
(4)计数时间
在定时模式下,定时器内部的技术单元计数花费的时间

STM32定时器介绍
STM32微处理器的定时器功能非常强大,定时器的种类也非常多。

(1)基本定时器
基本定时器是嵌入式系统中用于生成精确时间延迟或周期性事件的模块。通常由硬件计数器实现,通过时钟源驱动计数,达到设定值时触发中断或其他操作。
(2)通用定时器
通用定时器通常基于计数器实现,通过时钟源驱动计数器递增或递减。计数器的值可与预设的比较寄存器匹配,触发中断或输出信号。常见的工作模式包括:
- 定时模式:计数器达到设定值后产生中断或复位。
- 输入捕获:记录外部信号边沿的时间戳。
- PWM输出:通过比较寄存器生成占空比可调的脉冲信号。
(3)高级定时器
基于硬件定时器的实现 利用微控制器或处理器的硬件定时器模块,通过配置寄存器设置定时周期和触发模式。硬件定时器精度高。

定时/计数功能
1:内部时钟
2:外部时钟1:外部输入引脚 TIX
3:外部时钟2: 外部触发输入ETR
4:内部触发输入
时基单元
1:预分频模块
2:计数模块
3:自动重载模块
4:计数模式


定时计数功能的接口函数
1:时基单元初始化函数(HAL_TIM_Base_Init)

2:定时器轮询方式启动函数(HAL_TIM_Base_Start)

3:定时器中断方式启动函数(HAL_TIM_Base_Start_IT)

4: 定时器中断通用处理函数(HAL_TIM_IQRHandler)

5:定时器更新中断回调函数(HAL_TIM_PeriodElapsedCallback)

6:定时器中断标志清除函数(HAL_TIM_Clear_IT)

今日任务:
1: 定时器定时功能初始化,利用定时器完成LED灯闪烁;
2: 定时器PWMOUT功能初始化,利用PWMOUT输出完成LED灯闪烁,呼吸灯;
(1):在STM32进行硬件设置;配置定时器



2:配置脉冲占空比:

3:主要代码及简述:
__HAL_TIM_CLEAR_IT(&htim10,TIM_IT_UPDATE); 清除tim中断挂起位
HAL_TIM_Base_Start_IT(&htim10); // 启动中断
if(++LED_time ==50)
{
LED_time=0;
HAL_GPIO_TogglePin(GPIOC,GPIO_PIN_8);
HAL_GPIO_WritePin(GPIOC,GPIO_PIN_9|GPIO_PIN_10|GPIO_PIN_11|GPIO_PIN_12|GPIO_PIN_13|GPIO_PIN_14|GPIO_PIN_15,GPIO_PIN_SET);
HAL_GPIO_WritePin(GPIOD,GPIO_PIN_2,GPIO_PIN_SET);
HAL_GPIO_WritePin(GPIOD,GPIO_PIN_2,GPIO_PIN_RESET);
}
如果LED_time到50;点亮第一个灯;然后关闭;
4:呼吸灯(通过改变脉冲占空比做到呼吸灯效果)
for(Duty=0;Duty<=5000;Duty=Duty+Step)
{
__HAL_TIM_SET_COMPARE (&htim3,TIM_CHANNEL_3,Duty);
HAL_Delay (500);
}

(如有疑问请留言)