STM32标准库开发——TIM定时器中断

这篇具有很好参考价值的文章主要介绍了STM32标准库开发——TIM定时器中断。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


学习笔记来自:江科大自化协教程!!!


TIM定时器介绍

  • 定时器可以对输入的时钟进行计数,并在计数值达到设定值时触发中断
  • 16位计数器、预分频器、自动重装寄存器的时基单元,在72MHz计数时钟下可以实现最大59.65s的定时
  • 根据复杂度和应用场景分为了高级定时器、通用定时器、基本定时器三种类型
  • 不仅具备基本的定时中断功能,而且还包含内外时钟源选择、输入捕获、输出比较、编码器接口、主从触发模式等多种功能
    STM32标准库开发——TIM定时器中断,stm32,单片机,嵌入式硬件

STM32F103C8T6仅有定时器资源:TIM1、TIM2、TIM3、TIM4,分别为一个高级定时器,三个通用定时器没有基本定时器。
拓展:主模式触发DAC(主从触发模式),它能让内部硬件在不受程序的控制下实现自动运行,在某些情境下可以极大减轻CPU的负担: 用途就是在使用DAC时可能用到DAC输出一段波形,需要每隔一段时间触发一次DAC,让它输出下一个电压点,正常思路为先设置一个定时器产生中断,每隔一段时间在中断程序中调用代码手动触发一次DAC转换,然后DAC输出,,但这样会使主程序处于频繁被中断的状态,会影响主程序运行和其他中断的响应。所以定时器设计了一个主模式,主模式可把定时器的更新事件映射到触发输出TRGO(Trigger Out)的位置,TRGO直接接到DAC的触发转换引脚上,这样定时器的更新就不需要通过中断来触发DAC转换了!!

基本定时器介绍

STM32标准库开发——TIM定时器中断,stm32,单片机,嵌入式硬件
图中控制器的预分频器、计数器、自动重装载寄存器三个寄存器构成了最基本的计数计时电路,所以这一块电路叫做时基单元。 预分频器之前连接的是基准计数时钟的输入,由于基本定时器只能选择内部时钟,所以可以直接认为预分频器前这根线直接连在了输入端的内部时钟CK_INT,内部时钟的来源是RCC_TIMxCLK,这里的频率一般是系统的主频72MHz,故而通向时基单元的计数基准频率就是72MHz。

首先是预分频器可对72MHz的计数时钟进行预分频,,比如它写0就是不分频或者说是1分频,此时输出频率=输入频率=72MHz;如果写1就是2分频,输出频率=输入频率/2=36MHz,写2为3分频以此类推,所以预分频器的值和实际的分频系数相差了1,即实际分频系数=预分频器的值+1,它为16位最大科协65535,也即65536分频。
然后是计数器,计数器可以对预分频后的计数时钟进行计数,计数时钟每来一个上升沿计数器的值加1,也是16位,值可以是0加到65535,如果超过就会从0重新开始,所以计数器的值在计时过程中会不断自增运行,当自增运行到目标值后产生中断,完成定时任务。
所以还需要一个存储目标值的寄存器——自动重装寄存器,也是16位用于存储计数目标,当计数超过目标值时它会产生一个中断信号使计数器清零(更新中断)。图中向上的箭头UI代表“更新中断”,更新中断之后就会通往NVIC,我们再配置好NVIC的定时器通道,那么定时器的更新中断就能够得到CPU的响应了;向下的箭头U代表“更新事件”,更新事件不会触发中断,但可以触发内部其他电路的工作。

通用定时器介绍

STM32标准库开发——TIM定时器中断,stm32,单片机,嵌入式硬件

  • 相较于基本定时器,通用定时器的结构更为复杂。时基单元基本结构和每部分工作流程与基本定时器一样,除了向上计数模式,通用和高级定时器还支持向下计数模式和中央对齐模式,向下计数:从重装值开始向下自减,减到0后回到重装值同时申请中断;中央对齐:从0开始先向上自增计到重装值申请中断,然后再向下自减减到0,再申请中断,依次循环。
  • 图的上半部分为内外时钟源选择和主从触发模式结构,基本定时器只能选择内部时钟(即系统频率72MHz),通用和高级的还可选择外部时钟。第一个是来自TIMx_ETR引脚上的外部时钟(外部时钟模式二,在PA0上接入时钟信号来当作时钟源),第二个是来自其他定时器的信号(ITRX),第三个是来自Tlx引脚。

高级定时器介绍

STM32标准库开发——TIM定时器中断,stm32,单片机,嵌入式硬件

相较于通用定时器,高级定时器申请中断的地方增加了一个重复次数计数器,可以实现每隔几个计数周期才发生一次更新事件和更新中断(普通结构是每个计数周期都更新),相当于对输出信号又做了一次分频,提升了很多定时时间;
最后一部分为左下角刹车输入的功能,是为了给电机驱动提供安全保障,如果外部引脚BKIN(Break IN)产生刹车信号或者内部时钟失效产生了故障,那么控制电路就会自动切断电机的输出防止意外发生!


附录:

STM32标准库开发——TIM定时器中断,stm32,单片机,嵌入式硬件
STM32运行程序前,先启用内部RC 作为系统时钟信号,待外部高速OSC震荡源稳定后使用外部时钟信号作为系统时钟信号,通过锁相环倍频至72MHZ,如无意外所有定时器最终的时钟信号也为72MHZ文章来源地址https://www.toymoban.com/news/detail-801018.html


到了这里,关于STM32标准库开发——TIM定时器中断的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

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

    ​  本次课程采用单片机型号为STM32F103C8T6。 ​  课程链接:江科大自化协 STM32入门教程   往期笔记链接:   STM32学习笔记(一)丨建立工程丨GPIO 通用输入输出   STM32学习笔记(二)丨STM32程序调试丨OLED的使用   STM32学习笔记(三)丨中断系统丨EXTI外部中断

    2023年04月13日
    浏览(31)
  • STM32—TIM:基本定时器(输入捕获:测频率、周期)(标准库)

     频率测量:  频率中界频率:适用测周法                                                           频率中界频率:适用测频法 第一步:配置GPIO,TIM的时基单元              在配置TIM的时基单元参数有些许不同。 初始化输入捕获单元:void TIM_ICInit();   配置触发

    2024年02月13日
    浏览(20)
  • 【理论】STM32定时器时间计算公式 +【实践】TIM中断1s计时一次

     前言:定时器TIM的详细知识点见我的博文:11.TIM定时中断-CSDN博客 公式解释: ARR(TIM_Period):自动重装载值,是定时器溢出前的计数值 PSC(TIM_Prescaler):预分频值,是用来降低定时器时钟频率的参数 Tclk:定时器的输入时钟频率(单位Mhz),通常为系统时钟频率或者定时

    2024年02月03日
    浏览(25)
  • 【单片机】STM32单片机的各个定时器的定时中断程序,标准库,STM32F103

    高级定时器和普通定时器的区别(https://zhuanlan.zhihu.com/p/557896041): TIM1是高级定时器,使用的时钟总线是RCC_APB2Periph_TIM1,和普通定时器不一样。 timer.c timer.h 调用 timer.c timer.h 调用 timer.c timer.h 调用 timer.c timer.h 调用 timer.c timer.h 调用

    2024年02月07日
    浏览(23)
  • 【单片机】STM32单片机的各个定时器的定时中断程序,标准库

    高级定时器和普通定时器的区别(https://zhuanlan.zhihu.com/p/557896041): TIM1是高级定时器,使用的时钟总线是RCC_APB2Periph_TIM1,和普通定时器不一样。 timer.c timer.h 调用 timer.c timer.h 调用 timer.c timer.h 调用 timer.c timer.h 调用 timer.c timer.h 调用

    2024年02月11日
    浏览(19)
  • 【STM32笔记】STM32的定时器开发基础(二)(基于STM32CubeMX实现定时器中断)

      传统STM32外部中断 的设计步骤:  (1)将GPIO初始化为输入端口。  (2)配置相关I/O引脚与中断线的映射关系。  (3)设置该I/O引脚对印的中断触发条件。  (4)配置NVIC,并使能中断。  (5)编写中断服务函数。   基于STM32CubeMX的外部中断 设计步骤  (1)在STM3

    2024年02月20日
    浏览(23)
  • TIM-定时器——STM32

    TIM(Timer)定时器 定时器可以对输入的时钟进行计数,并在计数值达到设定值时触发中断 16位计数器、预分频器、自动重装寄存器的时基单元,在72MHz计数时钟下可以实现最大59.65s的定时 不仅具备基本的定时中断功能,而且还包含内外时钟源选择、输入捕获、输出比较、编码器

    2024年02月02日
    浏览(34)
  • STM32—定时器(TIM)_基本定时

    本文主要通过介绍定时器基本结构去学习如何使用定时器进行定时。 定时器可以对输入的时钟进行计数,并在计数值达到设定值时触发中断,从而达到计时功能。 本文从通用定时器介绍。本文所使用芯片为 STM32F103C8T6,拥有TIM1-TIM4 四个定时器资源。 图.2为基本定时器结构  

    2024年02月02日
    浏览(20)
  • STM32--TIM定时器(3)

    输入捕获IC(Input Capture),是处理器捕获外部输入信号的功能 。基于定时器抓取输入信号指定触发方式之间的长度。通过输入捕获功能,我们可以测量脉冲宽度和测量频率。 在每个高级定时器和通用器都有 4个 输入捕获通道。 当通道输入引脚出现指定电平跳变时,当前CNT的值

    2024年02月12日
    浏览(22)
  • STM32--TIM定时器(1)

    STM32的TIM(定时器)是一种非常常用的外设,用于实现各种定时和计数功能。 它是基于时钟信号进行计数,并在计数值达到设定值时触发中断,执行相应的操作 。 一般来说,STM32中有三类定时器: 在我们这款STM32F03C9T6有4种定时器资源: TIM1,TIM2,TIM3,TIM4 ; 对于定时器,类型越

    2024年02月12日
    浏览(19)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包