STM32开发笔记(1)——F407的时间基准问题

1.1 高级定时器中的重复计数

        高级定时器中的TIMx_RCR装载着需要重复计数的值,即:TIMx_RCR在每次重载计数(计数器上溢或下溢)时自动减一,当且仅当发生N+1次(N为TIMx_RCR重复计数器寄存器中的值)时,TIM才产生中断。

这一设定可以有效延长定时器产生中断的周期,减小CPU压力。

1.2 通用定时器(TIM2和TIM5)

        TIM2和TIM5作为32位定时器,可以设置1~65536的分频系数,以及最高0xffffffff的计数值,ST官方数据手册中的TIMx_CNT位数有误(文档中该寄存器只支持16位,实际为32位)

1.3 利用STM32定时器划分时间片的缺陷

        STM32中无符号32位数据进行减法,小数减去大数,使用小数减去大数会借位运算产生有符号的负数(补码),但在正常的运算中被视为真值,在TIM的时间片划分中展现为一个异常大的正数,使得多个时间片的紊乱。因此,建议利用TIM2TIM5两个32位高精度普通定时器作为时间片时基,将CNT计数值设置为上限0xffffffffCNT寄存器从0计数或减数到0,因此最大值应为0xfffffffe,利用取反特性,使得时间片受到的干扰降至最低。