首页 > 其他分享 >STM32_6(TIM)

STM32_6(TIM)

时间:2023-05-04 18:34:51浏览次数:36  
标签:CK 定时器 计数 STM32 TIM 计数器 时钟

TIM

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

 

定时器类型

 

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

 

定时器结构图

基本定时器

  内部时钟一般为72Mhz, 预分频器就是把时钟频率分频,最高可以65536, 比如预分配器是2,那么时钟频率为24Mhz,计时器等于自动重装载寄存器的时候,就是计时时间到了,那它就会产生中断信号,并且清零计数器,计数器自动开始下一次的计数计时。

有黑色阴影的就是带有影子寄存器的缓冲机制。

 

通用定时器

  先初始化TIM3,然后使用主模式把它的更新事件映射到TRGO上,接着再初始化TIM2,这里选择ITR2,对应的就是TIM3的TRGO,然后后面再选择时钟为外部时钟模式1,这样TIM3的更新事件就可以驱动TIM2的时基单元,也就实现了定时器的级联。

 

高级定时器

原本的通用定时器最高时间为59秒多,现在有了重复计数计数器后,就还需要再乘65536,提升了定时时间。

右边的输出引脚,由原来的一个变为了两个互补的输出,可以输出一对互补的PWM波,这些电路为了驱动三相无刷电机。

DTG寄存器就是高级定时器对输出比较模块的升级。

DTG(Dead Time Generate)死区生成电路:在开关切换的瞬间,由于器件的不理想,造成短暂的直通现象,所以才加入DTG, 在开关切换的瞬间,产生一定时长的死区,让桥臂的上下管全部关断,防止直通现象。

 

定时中断基本结构

 

预分频器时序

计数器计数频率:CK_CNT = CK_PSC / (PSC + 1)

 

计数器时序

计数器溢出频率:CK_CNT_OV = CK_CNT / (ARR + 1)

                    把计数频率带入得   = CK_PSC / (PSC + 1) / (ARR + 1)

 

计时器有/无预装时序

 ARPE就是控制有/无预装,0代表没有,1代表有

 

RCC时钟树

  时钟树,STM32中用来产生和配置时钟,并且把配置好的时钟发送到各个外设的系统,时钟是所有外设运行的基础。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

标签:CK,定时器,计数,STM32,TIM,计数器,时钟
From: https://www.cnblogs.com/toutiegongzhu/p/17367845.html

相关文章

  • elasticsearch7.13.4(7.X版本)使用RealtimeSignalProcessor进行删除时,索引_doc文档不会
    环境django==3.8.18elasticsearch==7.13.4drf-haystack==1.8.11django-haystack==3.2.1原因django-haystack如果没有指定HAYSTACK_IDENTIFIER_METHOD,默认使用<app.label>.<object_name>.<pk>作为id进行删除,而大部分生成文档时都是默认使用纯数字作为id。解决方法将删除id......
  • Python时间模块time
    时间模块-time#time()获取本地时间戳#ctime()获取本地时间字符串(参数是时间戳,默认当前)#localtime()获取本地时间元组(参数是时间戳,默认当前)#mktime()通过时间元组获取时间戳(参数是时间元组)#asctime()通过时间元组获取时......
  • stm32 Keil5 能识别到芯片,但无法下载程序 error:Flash Download failed -"cortex -M4"
         单片机是可以正常识别到的,但是无法正常下载程序。在网上找了很多办法。如读写被锁了呀。用J_FLASH也试的。但是无法擦除芯片。可以连接上。 最后解决办法:将SW的速度降低一些。我的下载线接了比较的杜邦线(劣质杜邦线害死人呀!!!!!),原来的设置是5M,改成100Khz就可以......
  • 【HMS Core】获取用户信息接口,返回 session timeout
    【问题描述】集成华为账号服务,获取用户信息,调用相关接口一直返回sessiontimeout,参考链接:https://developer.huawei.com/consumer/cn/doc/development/HMSCore-References/get-user-info-0000001060261938​ 【解决方案】1、如果是走的端测的比如OkHttpClient这种方式的是需......
  • Linux timeconfig命令
    Linuxtimeconfig命令Linuxtimeconfig命令用于设置时区。这是RedHat公司遵循GPL规则所开发的程序,它具有互动式操作界面,您可以轻易地利用方向键和空格键等,设置系统时间所属的时区。语法timeconfig[--arc][--back][--test][--utc][时区名称]参数:--arc使用Alpha硬件结......
  • Linux time命令
    Linuxtime命令Linuxtime命令的用途,在于量测特定指令执行时所需消耗的时间及系统资源等资讯。例如CPU时间、记忆体、输入输出等等。需要特别注意的是,部分资讯在Linux上显示不出来。这是因为在Linux上部分资源的分配函式与time指令所预设的方式并不相同,以致于time指令......
  • cublas runtime error : the GPU program failed to execute 报错
    情景在使用pytorch1.0和RTX3060Laptop训练GIN的时候出现了这个错误原因pytorch1.0对应的cuda10.0版本太低了,不支持新的GPU架构解决最终使用了更新版本的pytorch......
  • 06 Real-Time Ray-Tracing
    1.Tempora1SPP包含如下四条光线。但是一个像素只用1spp会噪声很严重。因此RTRT的主要目的是降噪,即滤波。1.1时间复用TemporaG-Buffer几何缓冲区:记录屏幕空间的信息;在光栅化的时候顺便得到。BackProjection首先,拿到当前帧像素的世界坐标,可以从G-buffer中拿到,否......
  • stm32------(5)系统时钟配置
    一、概述系统时钟,是整个芯片的心脏,如果没有了它,就等于人没有了心跳;在实际工程应用中,每当使用一个外设时,首先需要做的就是打开该外设对应的时钟;这样的好处就是,如果不使用一个外设的时候,就把它的时钟关掉,从而可以降低系统的功耗,达到节能,实现低功耗的效果(低功耗); 寄存器......
  • STM32_5(中断)
    中断系统中断:在主程序运行过程中,出现了特定的中断触发条件(中断源),使得CPU暂停当前正在运行的程序,转而去处理中断程序,处理完成后又返回原来被暂停的位置继续运行中断优先级:当有多个中断源同时申请中断时,CPU会根据中断源的轻重缓急进行裁决,优先响应更加紧急的中断源中断嵌套:当一......