×

STM32入门系列教程之定时器与蜂鸣器的详细说明

消耗积分:0 | 格式:rar | 大小:0.25 MB | 2020-07-17

分享资料个

  前一期教程已经详细讲述了STM32 中断编程,本来不想再讲述定时器。因为定时器自然也是用到中断处理。但一想,既然作为入门系列教程,就应该具备完整性。实际上,笔者在网上搜了一下,发现仍然有许多网友卡在定时器这里,因此有必要专门列出一期教程讲述定时器。

  一、STM32通用定时器原理

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

  实际上STM32 的CPU 文档给出的图与这个图略有区别。但是我们还是想研究这个图。原因是这个图对我们思路的理解比较有帮助。从图中可以看出,定时器的时钟不是直接来自APB1 或APB2,而是来自于输入为APB1 或APB2 的一个倍频器,图中的蓝色部分。

  下面以通用定时器2 的时钟说明这个倍频器的作用:当APB1 的预分频系数为1 时,这个倍频器不起作用,定时器的时钟频率等于APB1 的频率;当APB1的预分频系数为其它数值(即预分频系数为2、4、8 或16)时,这个倍频器起作用,定时器的时钟频率等于APB1 的频率两倍。

  可能有同学还是有点不理解,OK,我们举一个例子说明。假定AHB=36MHz,因为APB1 允许的最大频率为36MHz,所以APB1 的预分频系数可以取任意数值;当预分频系数=1 时,APB1=36MHz,TIM2~7 的时钟频率=36MHz(倍频器不起作用);当预分频系数=2 时,APB1=18MHz,在倍频器的作用下,TIM2~7 的时钟频率=36MHz。

  有人会问,既然需要TIM2~7 的时钟频率=36MHz,为什么不直接取APB1的预分频系数=1?答案是:APB1 不但要为TIM2~7 提供时钟,而且还要为其它外设提供时钟;设置这个倍频器可以在保证其它外设使用较低时钟频率时,TIM2~7 仍能得到较高的时钟频率。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

评论(0)
发评论

下载排行榜

全部0条评论

快来发表一下你的评论吧 !