STM32F103系列定时器一般有8个,TIM1--TIM8,TIM1和TIM8是高级定时器,TIM2--TIM5是通用定时器,剩下的是基本定时器。其中TIM6和TIM7没有引出脚,只能当定时器使用。
基本定时器 : 16 位的只能向上计数的定时器,只能定时,没有外部 IO。
通用定时器 : 16 位的可以向上/下计数的定时器,可以定时,可以输出比较,可以输入捕捉,每个定时器有四个外部 IO。
高级定时器 : 16 位的可以向上/下计数的定时器,可以定时,可以输出比较,可以输入捕捉,还可以有三相电机互补输出信号,每个定时器有 8 个外部 IO。
主要总结一下时钟问题:高级定时器是挂载APB2总线,APB2总线最高只能为72M,其它定时器挂载APB1总线,APB1总线最高只能为36M,预分频是库函数决定的,比如我们通常使用的系统时钟是72M,那么APB1预分频系数必须大于等于2。APB1挂载下的定时器的工作频率则是APB1倍频而来,倍频系数为2或者1,当预分频为1的时候,倍频系数为1,否则为2。APB2也是一样。倍频器自动设置
移植好的官方库函数,设置的频率为72M:APB1和APB2的频率分别为36M和72M。那么高级定时器的频率=APB2的频率=72M,因为APB2没有分频,也就是预分频系数为1。其它定时器的频率=APB1的频率*2=72M,因为APB1预分频系数为2(不为1),那么定时器的倍频系数就等于2。
图解:
系统时钟(72M)-----AHB分频器(1、2、4、8、16...)--------APB1(PCLK1)、APB2(PCKL2)分频器------TIM倍频器(1或2)---TIM定时器
以上文字写的比较通俗,不太专业。
参考资料:正点原子的STM32F1开发指南(库函数版)、STM32参考手册以及CSDN博主“宗师之路”的博客