STM32 ~ 定时器
定时器的基本框图:

不管是做PWM输出、定时中断还是输入捕获都肯定要搞清楚CK_INT 从哪里来,频率是多少?才能正确使用定时器。时钟肯定是来自时钟树,那我们就要去Reference manual里找找:

时钟源确实可以找到,但注意时钟存在翻倍可能性!if APBx PRESC= 1 x1 else x2 : 直接理解是如果APBx PRESC 预分频 设置成1 timer时钟等于APBx 不然 timer时钟为2倍APBx 。可是还是没有找到时钟源和timer时钟具体数值关系,这个就要去Datasheet里找了,找MCU系统框图:

我们发现有2个APB(Advanced Peripheral Bus) ,最大主频还还不一样,分别挂了多个定时器。到这里我们总算找到了timer的具体关联的时钟源了。如何计算频率呢?
举例1:假设使用的是timer2 AHB1=168MHz
// Timer2 On APB1 42MHz(MAX) ==> 可设 APB1 PRESC =4 APB1 =42MHz。
// if APBx PRESC = 1x1 else x2 ==> Timer2_CLK = 42MHz*2 = 84MHz 。
举例2:假设使用的是timer1、timer2 AHB1= 84 MHz
// Timer2 On APB1 42MHz(MAX) ==> 可设 APB1 PRESC =2 APB1 =42MHz。
// if APBx PRESC = 1x1 else x2 ==> Timer2_CLK = 42MHz*2 = 84MHz 。
// Timer1 On APB2 84MHz(MAX) ==> 可设 APB2 PRESC =1 APB2 =84MHz。
// if APBx PRESC = 1x1 else x2 ==> Timer1_CLK = 84MHz*1 = 84MHz 。
参考:
stm32定时器的理解
STM32定时器的使用(定时器中断、PWM输出和跳变捕获、主从模式)
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
