第四章 定时器和呼吸灯
4.1基本定时器
先根据数据手册查看自己芯片对应的定时器分类。
这里选用STM32F1系列,STM32F1系列共有 8 个定时器,分为基本定时器(TIM6 和 TIM7),通用定时器(TIM2/3/4/5)和高级定时器(TIM1/8)。
①时钟源
定时器时钟TIMxCLK,即内部时钟CKINT,经APB1预分频器后分频提供,如果APB1预分频系数等于1,则频率不变,否则频率乘以2,库函数中APB1预分频的系数是2,即PCLK1=36M,所以定时器时钟TIMxCLK=36*2=72M。
②计数器时钟
定时器时钟经过PSC预分频器之后,即CK_ _CNT, 用来驱动计数器计数。PSC是一个16位的预分频器,可以对定时器时钟TIMxCLK进行1+65536之间的任何一个数进行分频。具体计算方式为: CK CNT=TIMxCLK/(PSC+1)。
③计数器
计数器CNT是一个16 位的计数器,只能往上讦数,最大计数值为65535。当计数达到自动重装载寄存器的时候产生更新事件,并清零从头开始计数。
Prescaler:可编程预分频器;
Counter PerIod:主计数器
定时器发生中断时间的计算方法:
单位:s
例:让LED1间隔一秒闪亮
CubeMX部分配置
代码部分:首先找到定时器的回调函数: