2.时钟源从STM32F103基本定时器内部结构图可以看出,基本定时器TIM6和TIM7只有一个时钟源,即内部时钟CKINT。对于STM32F103所有的定时器,内部时钟CKINT都来自RCC的TIMxCLK,但对于不同的定时器,TIMxCLK的来源不同。基本定时器TIM6和TIM7的TIMxCLK来源于APB1预分频器的输出,系统默认情况下,APB1的时钟频率为72MHz
2. 时钟源 从STM32F103基本定时器内部结构图可以看出,基本定 时器TIM6和TIM7只有一个时钟源,即内部时钟CK_INT。对 于STM32F103所有的定时器,内部时钟CK_INT都来自RCC 的TIMxCLK,但对于不同的定时器,TIMxCLK的来源不同。 基本定时器TIM6和TIM7的TIMxCLK来源于APB1预分频器的 输出,系统默认情况下,APB1的时钟频率 为72MHz
3.预分频器预分频可以以系数介于1~65536之间的任意数值对计数器时钟分频。它是通过一个16位寄存器(TIMxPSC)的计数实现分频。因为TIMxPSC控制寄存器具有缓冲作用,可以在运行过程中改变它的数值,新的预分频数值将在下一个更新事件时起作用。图6-2是在运行过程中改变预分频系数的例子,预分频系数从1变到2
3. 预分频器 预分频可以以系数介于1~65536之间的任意数值对计数 器时钟分频。它是通过一个16位寄存器(TIMx_PSC)的计 数实现分频。因为TIMx_PSC控制寄存器具有缓冲作用,可 以在运行过程中改变它的数值,新的预分频数值将在下一个 更新事件时起作用。 图6-2是在运行过程中改变预分频系数的例子,预分频系 数从1变到2
0000CKPSCCNT_EN700定时器时钟=CKCNT计数器寄存器0102F7XF8FFAFBFd0003更新事件(UEV)预分频控制寄存器0写新的数值至TIMxPSC预分频器缓冲器01XXXXoX预分频器计数器0图6-2预分频系数从1变到2的计数器时序图
图6-2 预分频系数从1变到2的计数器时序图
4.计数模式STM32F103基本定时器只有向上计数工作模式,其工作过程如图6-3所示,其中个表示产生溢出事件。计数值时间向上计数图6-3向上计数工作模式
4. 计数模式 STM32F103基本定时器只有向上计数工作模式,其工作 过程如图6-3所示,其中↑表示产生溢出事件。 计 数 值 时间 向上计数 计 数 值 时间 向下计数 图6-3向上计数工作模式
基本定时器工作时,脉冲计数器TIMXCNT从O累加计数到自动重装载数值(TIMxARR寄存器),然后重新从O开始计数并产生一个计数器溢出事件。由此可见,如果使用基本定时器进行延时,延时时间可以由以下公式计算:延时时间=(TIMxARR+1)*(TIMxPSC+1)/TIMXCLK当发生一次更新事件时,所有寄存器会被更新并设置更新标志:传送预装载值(TIMxPSC寄存器的内容)至预分频器的缓冲区,自动重装载影子寄存器被更新为预装载值(TIMxARR)。以下是一些在TIMxARR=0x36时不同时钟频率下计数器工作的图示例子。图6-4内部时钟分频系数为1,图6-5内部时钟分频系数为2
基本定时器工作时,脉冲计数器TIMx_CNT从0累加计数 到自动重装载数值(TIMx_ARR寄存器),然后重新从0开 始计数并产生一个计数器溢出事件。由此可见,如果使用基 本定时器进行延时,延时时间可以由以下公式计算: 延时时间=(TIMx_ARR+1)*(TIMx_PSC+1) /TIMxCLK 当发生一次更新事件时,所有寄存器会被更新并设置更 新标志:传送预装载值(TIMx_PSC寄存器的内容)至预分 频器的缓冲区,自动重装载影子寄存器被更新为预装载值( TIMx_ARR)。以下是一些在TIMx_ARR=0x36时不同时钟 频率下计数器工作的图示例子。图6-4内部时钟分频系数为1 ,图6-5内部时钟分频系数为2