1. DualTimers简介
cortex m0是ARM公司推出的一款小型低功耗处理器,集成了dualtimers双定时器。
dualtimers是挂在APB总线上的从外设,有如下特性:
- 可配置16位或32位计数器,采用向下计数的方式
- 支持1/16/256分频
- 每个定时器有独立的使能信号
- 三种定时模式:单次计时one-shot,周期计时periodic,自由运行模式free-running
- 周期装载寄存器period load register和后台装载寄存器background load register
2. DualTimers特性
2.1 三种定时模式
dualtimers有三种计时模式,分别是
1. 自由运行模式:从最大值向下计数,每计到0就产生一次中断,不断循环。
2.周期计时模式:从重装载值向下计数,每计到0就产生一次中断,不断循环。重装载值可在定时器初始化时进行配置。如果在counter正常计数时配置重装载值,那么counter会立即从重装载值重新向下计数。
3.单次计时模式:计数器只产生一次中断,计数器向下计到0时就会停止。
2.2 16bit或32bit宽度counter计数器
计数器counter可选16bit宽度或32bit宽度
2.3 定时器分频
配置寄存器:control register [3:2] TimerPre
定时器支持1分频,16分频和256分频。
一般微秒、毫秒、秒级的延时,完全可以使用1分频作为分频因子,且更加准确。
由于这里使用的系统时钟是50MHz,希望产生1秒中的时间间隔,只需要将分频模式设为1分频,装载值设为50M即可。
2.4 装载值和当前值
定时器采用的是向下计数的方式,因此配置装载值后,计时器从装载值向下计数直至计至0并产生中断。
在周期定时模式下,计至0后会重新从装载值向下计数并循环往复。
对装载寄存器Load Register写值,能够直接将向下计数的counter重设到新装载值(也就是说如果上次计数还没有计到0,这一修改就使得上次计数还没有进入中断就重新计数)。
如果对后台装载寄存器Background Load Register写值,则不会立即修改counter,而是counter向下计数至0后开始下一次计数时,从后台装载寄存器的值开始计时。</