灵训教育热线电话报名咨询热线:021-64325820   QQ:437750370 联系我们论坛下载中心
定时器
日期:2019-12-05 14:08:30 | 编辑:定时器

     STM32系列的CPU,有多达8个定时器,其中TIM1和TIM8是能够产生三对PWM互补输出的高级定时器,常用于三相电机的驱动,它们的时钟由APB2的输出产生。其它6个为普通定时器,时钟由APB1的输出产生。

   通用定时器的定义:STM32的通用定时器是一个通过可编程预分频器(PSC)驱动的16位自动装载计数器(CNT)构成。

   功用:STM32的通用定时器可以被用于测量输入信号的脉冲长度(输入捕获)或者产生输出波形(输出比较和PWM等)。

   分频系数:决定定时器的时基,即最小定时时间。 

   定时器的时钟来源:

   定时器的时钟不是直接来自APB2,而是来自于输入为APB1或APB2的一个倍频器。当APB1的预分频系数为1时,这个倍频器不起作用,定时器的时钟频率等于APB1的频率;当APB1的预分频系数为其他数值(即预分频系数为2、4、8或16)时,这个倍频器起作用,定时器的时钟频率等于APB1的频率两倍。

      举个例子说明。假定AHB=36MHz,因为APB1允许的最大频率为36MHz,所以APB1的预分频系数可以取任意数值;

   当预分频系数=1时,APB1=36MHz,TIM2~7的时钟频率=36MHz(倍频器不起作用);

   当预分频系数=2时,APB1=18MHz,在倍频器的作用下,TIM2~7的时钟频率=36MHz。

   由于APB1不仅给通用定时器提供时钟,还给其他外设提供时钟,因此也体现了APB1 Prescaler设计的灵活性。

   对自动重装载寄存器赋值,TIM_Period的大小实际上表示的是需要经过TIM_Period次计数后才会发生一次更新或中断。对TIM_Prescaler的设置,直接决定定时器的时钟频率。通俗点说,就是一秒钟能计数多少次。比如算出来的时钟频率是2000,也就是一秒钟会计数2000次,而此时如果TIM_Period设置为4000,即4000次计数后就会中断一次。由于时钟频率是一秒钟计数2000次,因此只要2秒钟,就会中断一次。发生中断时间=(TIM_Prescaler+1)*(TIM_Period+1)/FLK。

   同样需要注意的,一进入中断服务程序,第一步要做的,就是清除掉中断标志位。以便下次中断服务函数的顺利 执行。

注意:APB1 Prescaler后得到的是通用定时器的时钟源,在此基础上进行TIM_Prescaler的设置就得到通用定时器具体的时钟频率。所以小伙伴们千万不要把文中定时器中经常提到的76MHz时钟以及由TIM_Prescaler+1)*/FLK计算得到的时钟频率搞混淆。

当然,计数器的计数模式比较简单,就不进行详细的说明。

1.jpg

关于我们
灵训IT教育是由上海灵育信息科技有限公司设立的开发类的培训机构。是国内首家以软硬件开发为主业,同时兼顾个人培训、企业培训的高科技信息科技公司。目前在校学员300余名,专兼职讲师10名,所有讲师均有十年以上开发经验,至少有3年以上授课经验。
报名咨询热线:021-64325820、企业热线:021-64325821
地址:上海漕宝路82号,上海光大会展中心,E座十楼 1001/1003


下载中心

扫微信,索取教学资料
在线客服

扫扫马上咨询
沪ICP备15052312号