一、寄存器描述
在这17个寄存器里,我们需要的清楚掌握的是:控制寄存器1(TIMx_CR1)、DMA/中断使能寄存器(TIMx_DIER)、状态寄存器(TIMx_SR)、计数器(TIMx_CNT)、预分频器(TIMx_PSC)、自动重装载寄存器(TIMx_ARR),接下来一一讲解。
二、控制寄存器1(TIMx_CR1)
共16位,其中有效位有十位,0位为使能计数器。1,2,3位不重要不说。4位用来设置是向上计数还是向下计数。5、6位用来选择中央对齐模式,通俗来说,就是计数器交替得向上或向下计数,可配置为只在计数器向下计数时被设置、只在计数器向上计数时被设置、在计数器向上和向下计数时均被设置或者计数器依据方向位(DIR)向上或向下计数。需要注意的是,如果设置中央对齐模式,则DIR无效,即4位无效。7位是自动重装载预装载允许位,具体来说,是否需要自动重装载,如果是则到达计数上限后自动装载到寄存器,产生一次中断。
三、DMA/中断使能寄存器(TIMx_DIER)
共16位,有12位有效位,这个寄存器里需要注意的是0位为允许中断更新,1、2、3、4位为通道允许捕获/比较中断。
四、状态寄存器(TIMx_SR)
共16位,10位有效位,这个寄存器需要注意的是0位,更新中断标记,如果产生了中断,这个位会被软件或者硬件置1。
五、计数器(TIMx_CNT)
共16位,用来存放需要计数的数值,比如我们需要计数为10000,那么就需要将这个寄存器的值设置为9999,那么就需要将0010 0111 0000 1111装入到每一个位。
六、预分频器(TIMx_PSC)
通用定时器挂载在APB1上,定时器的频率与所在APB的总线频率不一致,则定时器的时钟频率被设置为APB总线频率的2倍。CK_CNT为定时频率,Fck_psc为工作频率。例如:10KHZ =
72MHZ/(PSC+1),则PSC=7199,则需要将0001110000011111装入到每一个位。10KHZ相当于0.1ms计数一次,如果需要计数1s,那么就需要将上面的计数器值设置为9999。
七、自动重装载寄存器(TIMx_ARR)
这个寄存器里存储了CNT计数器的值,CNT随着时钟精确的计数,向上,向下,或者双向,如果向下计数,当计数到0后,重新装载原先的那个值而这个值放在另一个寄存器中,因为这个值是重新装载时需要的值,也就叫这个寄存器为自动重装载寄存器。