STM32学习笔记 ———— TIM定时中断

1、Tim简介

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

2、定时器类型

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

3、DAC

DAC(数字模拟转换器) 是一种电子设备或电路,用于将数字信号转换为相应的模拟信号。在现代电子系统中,DAC通常用于将数字信号转换为模拟电压或电流输出,以供模拟电路或外部设备使用。

DAC的基本工作原理是根据输入的数字信号值,在一定的时间间隔内产生相应的模拟输出。这个输出可以是连续的模拟电压或电流信号,也可以是离散的模拟量。DAC通常由一个数字信号输入端、一个模拟输出端和控制电路组成。

DAC的应用非常广泛,包括音频处理、通信系统、控制系统、测试与测量仪器等。在音频领域,DAC常用于数字音频播放器、音频接口、功放等设备中,将数字音频信号转换为模拟音频信号输出到扬声器或耳机。在控制系统中,DAC可用于生成模拟控制信号,控制电机、阀门、灯光等设备的运动或状态。

总之,DAC是数字电路与模拟电路之间的重要接口,它实现了数字信号到模拟信号的转换,为数字系统与模拟系统之间的数据交互提供了基础。

4、基本定时器

下面的预分频器、CNT计数器和自动重装载寄存器构成了最基本的计数计时电路,这一块电路也叫做时基单元。

RCC通向内部时钟的频率一般是72MHZ。

预分频器:对输入的72MHZ的时钟进行预分频,0就是不分频或者1分频---》输出频率 = 输入频率=72MHZ    如果预分频写1,那就是2分频,输出频率=输入频率 / 2 = 36MHZ。 如果预分频写2,那就是3分频,输出频率=输入频率 / 3 以此内推。

预分频器的值与实际的分频系数之间相差了1,实际分频系数 = 预分频器的值 + 1

预分频器是16位的,最大值是65535,也就是65536 分频。

计数器: 可以对预分频后的计数时钟进行计数,计数时钟每来一个上升沿,计数器的值就加1,最大值655359(16位),超过这个值重新回到0。计数器在计时工程中不断自增运行,到达目标值的时候发生中断,就完成了定时的任务。

自动重装载定时器:存储上面目标值,当达到这个目标值的时候,发出中断信号,并且清零计数器,计数器自动开始下一次的计数计时。

上面那个向上的折线箭头就代表中断信号,表示更新中断,通往NVIC,再配好NVIC的定时器通道,定时器的更新中断就能得到CPU的响应。

向下的箭头代表更新事件,它不会触发中断,但是会触发其他电路工作。

更新事件通过主模式映射到TRGO,然后TRGO就会去直接触发DAC。

5、通用定时器

时基单元还是跟基本定时器一样。有一点不一样就是基本定时器的计数器只支持向上自增,通用定时器和高级定时器还支持向下计数模式和中央对齐模式(先向上增到目标值,再到0,再向下减到目标值,再到0)

通用定时器不仅可以选择72MHZ的内部时钟,还可以选择外部时钟。

外部时钟模式1: ETR引脚信号--- ITR信号(其他定时器的TRGO输出,具体可以看下表)----TI1F_ED(输入捕获单元的CH1引脚,上升沿和下降沿均有效) ----- TI1FP1(CH1)和 TI1FP2(CH2)    ,外部时钟模式1一般通过ETR引脚   

外部时钟模式2: ETR信号 --- 输入滤波 --- ETRF ----触发控制器

编码器接口: 可以读取正交编码器的输出波形

下面一块:

输出比较电路:对应CH1----CH4的引脚,可以用于输出PWM波形,驱动电机。

输入捕获电路:对应CH1 ----CH4的引脚,可以用于测输入方波的频率。

捕获/比较寄存器:输入捕获和输出比较共用的。

6、高级定时器

里面一部分跟通用一样。

申请中断的地方增加了一个重复次数计数器,可以实现每隔几个计数周期,才发生一次更新事件和更新中断。

DTG:死区生成电路

最右边多了几个互补的PWM波,为了驱动三相无刷电机。

刹车输入功能

7、定时中断基本结构

8、预分频器时序

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

CK_PSC: 72MHZ

CNT_EN: 计数器使能,高电平正常运行,低电频计数器停止

CK_CNT:计数器时钟,即是预分频器的时钟输出,又是计数器的时钟输入

ARR自动重装值就是FC

9、计数器时序

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

10、计数器无预装时序

11、计数器有预装时序

12、 RCC时钟树

执行主函数之前,要执行一个SystemInit函数,这个函数就是用来配置时钟树的 。

左边 产生电路, 右边 分配电路,中间的SYSCLK就是系统时钟72MHZ。

 时钟产生电路:有四个震荡源,内部的8MHZ高速RC振荡器,外部的4-16MHZ高速石英晶体振荡器(晶振,一般8MHZ),这两个高速晶振是提供系统时钟的,AHB、APB2、APB1。

外部的32.768KHZ低速晶振,一般给RTC提供时钟,内部的40KHZ低速RC振荡器,可以给看门狗提供时钟。    

锁相环

CSS: 时钟安全系统,负责切换时钟,监测外部时钟状态,一旦失效,就切换到内部时钟

高级定时器,通用定时器,基本定时器的内部基准时钟都是72MHZ。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值