1,TIM3IntInit参数

TIM_TimeBaseInit这个是设置基本频率的吧,用来控制输出PWM的周期,TIM_OCInit是配置输出通道的吧,两个都要配置才能输出PWM吧TIM3_PWM3_Init(u16 arr,u16 psc)这两个参数arr 和 psc 是什么意义呢,比如TIM3_PWM3_Init(899,8)是指70MHK8分频,然后PWM的频率是10KHZ,但是PWM的占空比的取值范围就是0到899了,如何才能让PWM的取值范围位0到10000呢!

TIM3IntInit参数

2,STM32的APB时钟预分频数到底是怎么确定的AHB的频率到底是72MH还是什么

APB1最大频率是36Mhz,这个在初始化的时候就已经设置了的,如果用库函数默认就是36Mhz,在main函数运行前就设置了,一般可以不管。如果自己操作寄存器就不一定了。然后psc的问题:其实里面有两个分频的概念,APB预分频和计数器时钟频率(CK_PSC)的关系指的是AHB分频得到APB1,一般AHB取最大72Mhz,所以APB1是AHB的2分频,既然不是1分频,所以计数器时钟就是APB1的2倍了。而最终定时器的时钟频率(CK_CNT)是对CK_PSC进行psc值的分频得到的,这个值就是我们用来定时计算的数值。图中CK_PSC就是从APB1得到的时钟,预分频控制寄存器的值就是PSC里面的值,而CK_CNT就是分频最终得到的值。

STM32的APB时钟预分频数到底是怎么确定的AHB的频率到底是72MH还是什么

3,单片机已知定时时间如何设计PSC和ARR的值

对于STM32F4开发板,先弄清APB1的时钟频率是42M,是AHB时钟168M经4分频得到的,由于分频系数不为1,因此CK-INT的频率是APB1时钟的2倍84M,可知 定时时间 us=(ARR+1)(PSC+1)/84M取PSC=83, 刚好一个脉冲1us,则定时时间 us=(ARR+1),定时1000US,ARR取999 定时100US,ARR取 9916位定时器 最大可定时 65535 US。取PSC=167, 则一个脉冲2us取PSC=839, 则一个脉冲10us取PSC=8399, 则一个脉冲100us 这时最大可定时 6.5535 S。取PSC=83999 不行,超过16位寄存器的允许范围对于STM32F1开发板,APB1的时钟频率是36M,是AHB时钟72M经2分频得到的,由于分频系数不为1,因此CK-INT的频率是APB1时钟的2倍即72M。

单片机已知定时时间如何设计PSC和ARR的值


文章TAG:psc为8是多少分频多少  多少分  分频  
下一篇