5.江科大STM32学习之TIM定时中断

1.什么是TIM

【理论】STM32定时器时间计算公式 +【实践】TIM中断1s计时一次-CSDN博客

在STM32中定时器的基本主频率为72MHZ,将72MHZ,72个计数值就是1MHZ——1us产生一次

1.基本定时器

a.定时器基本功能

时基单元:预分频器+自动重载寄存器+计数器

预分频器:0为不分频,1为72MHZ/2     预分频器为16位max:65535

计数器:对预分频后的时钟进行计数(计数时钟每来一个上升沿计数器就加1)0~65535,到65535后又归0,这个就类似于跑步一圈又一圈

自动重装寄存器:就类似于计算你跑目标,比如100m,你跑到100然后他直接给你送回起点让你重跑

然后如果你配置了中断,就会进入中断

AD转换可以将实际物理量(如声音、温度、光强)转换为数字形式进行处理,光敏,温湿度等

而DA转换则可以将数字信号转换为模拟形式输出到外部设备或环境中,电机控制

b.定时器第二功能:

主动触发DAC通过trgo控制DAC比定时器中断减少了中断服务函数,等定时器到了时间,产生更新时间可以通过映射到TRGO的位置,TRGO接到DAC的触发引脚上,TRGO会直接去触发DAC,就不用手动配置定时器中断了比如PWM脉冲输出

c.通用定时器

多出来部分功能:输入捕获,和输出比较。

d.高级定时器

重复计数寄存器作用:1.实现每隔几个定时周期才能发生更新时间(更新中断)

2.能够增加定时时间时长最高时间可以*65536

前三路输出控制方面:可以输出一对互补的PWM波形用于驱动三相无刷电机

DTG:寄存器死区生成电路,防止在开关导通的一瞬间互补电压相等,造成短暂的直通现象

BKIN刹车输入电路:通过外部输入刹车信号,或者时钟输入失效,切断电机输出,防止电机产生故障

2.预分频器时序

如图可以得出预分频器输入时钟是不断按照程序设定的输入的

当CNT_EN(使能为0时定时器时钟不运行),当使能为1时,时钟(CK_CNT)开始计数,到ARR(自动重装值)设定为FC并且下一个时钟来临时,计数器归0同时产生一个更新时间,计数寄存器重新计数

计数器寄存器也跟随时钟上升沿不断自增,由图很明显可以看出当预分频控制寄存器由0~1分频时定时寄存器没有导致定时器时钟频率变化,而直到本次计数周期结束时产生更新事件预分频缓冲寄存器发生变化时定时器时钟信号频率才发生变化

并且预分频计数器内部也会计数而且预分频寄存器内部的值和计数器内部的值有一个数的偏移,就会有CK_CNT=CK_PSC/(PSC+1)

3.计数器时序(与上类似) 

当计数器计数到ARR(自动重装设定值时)计数器溢出,产生更新事件,并产生更新中断标志位,然后去申请中断,然后中断响应,并要在中断服务函数中将中断标志位手动清0

a.计数器无预装时序(寄存器没有缓冲寄存器)

b.计数器有预装时序

如果没有影子寄存器将F5直接改成36,因为36比F1小就会导致F1只能自增到FF然后在回到0在加到36然后产生更新时间发生中断

4.时钟树

a.AHB总线左边部分

先看左边四个震荡源分别是:8MHZ的高速RC震荡器,外部的4~16MHZ石英晶振震荡器(晶振)

32.768KHZ的低速晶振,内部40KHZ低速RC震荡器

其中两个高速晶振来提供系统时钟,内部外部都有一个8MHZ的晶振,其中石英震荡器要比RC震荡器要更加稳定

st时钟工作:先是用内部8MHZRC晶振,走HSI到SW先输出为系统时钟,然后启动外部时钟进入PLL锁相环进行倍频,8MHZ倍频9倍,得到72MHZ,等到锁相环输出稳定后选择锁相环输出系统时钟,这样就将系统时钟由8MHZ配置为72MHZ,所以当你的外部时钟出现问题时,你的程序会一直用系统内部8MHZ时钟,所以系统运行的速度会慢10倍,定1s时间可能10s才能反应过来

css时钟安全系统,用来监测外部时钟有没有问题

b.AHB总线右边部分

假设从SW中出来的系统时钟为72MHZ并且AHB系统分频为1(和计数器不一样)不分频,并且APB预分频为2,那么APB输出的时钟信号为36MHZ,(其中你要用定时器72MHZ的话就要用下面一路如果APB预分频为1,不变,否则时钟频率*2)因此才能稳定时钟信号为72MHZ

科大STM32外部中断是指通过配置STM32的外部中断和相应的GPIO引脚,使得当外部事件(如按键按下)发生时,可以触发中断并执行相应的中断服务程序。 在配置外部中断时,需要进行时钟配置、GPIO配置、AFIO配置、EXTI配置以及NVIC配置。时钟配置用于使能外部中断所需要的时钟源,GPIO配置用于设置外部中断引脚的功能和模式,AFIO配置用于选择外部中断引脚对应的AFIO映射功能,EXTI配置用于使能和设置外部中断事件的触发方式,NVIC配置用于使能和设置外部中断中断向量。 在具体实验中,可以通过按键触发外部中断,并在OLED屏幕上显示计数器的数值。需要注意的是,按键可能存在抖动现象,但不应该在中断返回函数中盲目地增加HAL库的delay函数来解决抖动问题。可以采用多个for循环去抖动的方法来处理。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [关于STM32-外部中断配置(非常详细,看不懂你打我)](https://download.csdn.net/download/safasdfe/76778516)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [STM32Cubemx HAL移植标准库例程3:按键外部中断](https://blog.csdn.net/qq_41968464/article/details/126961959)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值