单片机定时器

1、定时器原理

        单片机定时器的工作原理基于计数器的操作。它接收一个稳定的时钟信号(通常由单片机内部的晶体振荡器提供),并在每个时钟周期结束时增加计数器的值。当计数器的值达到预设的阈值时,定时器会触发一个中断或产生一个特定的输出信号,然后可能重置计数器并继续计数。

        在作为定时器使用时,计数器对内部时钟信号进行计数,从而测量时间间隔。而当作为计数器使用时,它则对外部输入的信号进行计数,如脉冲信号的频率或数量。

2、 定时器关键模块

时钟源模块

  • 定时器需要一个时钟源来驱动其计数。时钟源可以是内部时钟(如系统时钟经过预分频后得到的时钟),也可以是外部时钟(如从外部引脚输入的时钟信号)。时钟源模块负责选择和配置这些时钟源。

预分频器(Prescaler)

  • 预分频器用于对时钟源进行分频,以产生定时器计数所需的更低频率的时钟。通过调整预分频器的值,可以控制定时器的计数速度,从而改变定时时间。

计数器(Counter)

  • 计数器是定时器的核心部分,它根据时钟源的频率和预分频器的设置进行计数。计数器的值可以是递增的,也可以是递减的(取决于定时器的配置)。当计数器的值达到某个预设的阈值(自动重载值)时,可以触发中断、更新事件或重置计数器。

自动重载寄存器(Auto-Reload Register, ARR)

  • 自动重载寄存器存储了计数器达到上限后应该重新加载的值。这个值决定了定时器的定时周期。在定时器更新事件发生时,计数器的值会被自动重置为自动重载寄存器中的值,从而开始下一个计数周期。

捕获/比较寄存器(Capture/Compare Registers, CCR)

  • 捕获/比较寄存器用于实现输入捕获和输出比较功能。在输入捕获模式下,它们用于存储外部信号的边沿时间戳。在输出比较模式下,它们与计数器的值进行比较,以触发输出信号的翻转或生成PWM波形。

输出控制模块

  • 输出控制模块负责根据捕获/比较寄存器的值和定时器的配置来控制输出引脚的状态。这包括PWM波形的生成、输出信号的翻转等。

中断/DMA请求模块

  • 当定时器发生特定事件(如计数器溢出、输入捕获、输出比较匹配等)时,中断/DMA请求模块会生成中断请求或DMA请求。这些请求可以被CPU或DMA控制器处理,以执行相应的中断服务程序或数据传输操作。

控制和状态寄存器

  • 控制和状态寄存器用于配置定时器的各种参数(如计数模式、时钟源选择、预分频器值等),并存储定时器的当前状态(如是否发生中断、是否处于更新事件等)。

3、定时器重要部分

基本定时器

        几乎没有任何输入、输出通道,常用于实现基本的定时、计数功能。

        在STM32系列中,某些型号的基本定时器可能标记为TIM6、TIM7等。

        基本定时器定时中断实验:

        首先通过自定义的中断初始化函数对基础定时器进行初始化,配置定时器句柄结构体的相关成员变量赋值,通过基础时钟初始化函数对基础时钟初始化,通过基础时钟中断并启动计数器函数进行使能该基础时钟,再通过定时器基础msp初始化函数对时钟和中断进行使能及配置,最后通过对应定时器中断服务函数进行中断处理。

通用定时器

        具备多路独立的捕获和比较通道,可以完成定时、计数、输入捕获、输出比较等功能。

        在STM32系列中,常见的通用定时器包括TIM2、TIM3、TIM4、TIM5等。

        通用定时器PWM(脉冲宽度调制)输出实验:

        

        通用定时器输入捕获实验:

 

        通用定时器脉冲计数实验:

高级定时器

        除具备通用定时器的功能外,还具备死区控制的互补信号输出、紧急刹车关断输入等功能,适用于电机控制和数字电源设计等复杂应用。

        在STM32系列中,常见的高级定时器包括TIM1、TIM8等

        高级定时器输出指定个数PWM实验:

   

        高级定时器输出比较模式实验:

 

        高级定时器互补输出带死区控制实验:

 

高级定时器PWM输入模式实验:

 

 定时中断,PWM输出比较,输入捕获,互补输出带死区控制,pwm输入捕获。

滴答定时器

 滴答定时器(SysTick)可以作为系统时钟,也可作为延时功能时钟源。在实时操作系统中,滴答定时器通常作为心跳时钟,提供系统的节拍信号。

在stm32移植Free RTOS时,有个重要的步骤就是配置滴答定时器。

\0、总结

        定时器是一个难点,牵扯功能巨多,还有待学习。

  • 26
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值