TIM5--32位定时器的使用以及16位定时器的级联
一、对于具有32位定时器的芯片型号(V203RB,V208):
方法一:
因为此定时器是32bit的,库不太好做兼容,需要用寄存器自己操作,且必须采用位定义的方式。且CNT寄存器需要采用32bit地址去访问
下面是操作方式(其实就是在传完结构体后对此地址赋值,以32地址形式):
获取CNT值也要采用32bit地址去访问:
若使用TIM的PWM模式:
比较捕获寄存器也需要采用上述方式:
方法二:修改库中的相关寄存器位数(修改后可直接和普通定时器一样来使用库函数来操作)
这个可改成跳过去改成uint32_t.
其实这个值最终是传给ATRLR的,也将他给修改成u32,同时把保留位给删掉,这样后面寄存器地址不会受影响。
同时CNT也需要和上面一样的操作
如果用到PWM的话这些也需要改成u32,同时将保留位也屏蔽掉。
至此就可以像普通定时器一样来操作32位定时器了,同时也不影响普通定时器的使用!
二、对于没有32位定时器的芯片:
对于没有32位定时器的芯片,可通过级联的方式来增加定时器的位数,
示例:下面我们把定时器二和三级联起来,定时器三做主,定时器二做从
我们TIM2,TIM3正常初始化在TIM2处加上这个(从机设置):
需注意选择触发源时选了TIM_TS_ITR2,原因手册中见下图
TIM3处(主机设置):
这样就完成了定时器的级联,可以直接理解为TIM2的时钟源现在是TIM3,那么这样的话,还可以用定时器二来级联另一个定时器,来实现48位甚至64位定时器。