上篇说明了系统自带的Interrupt控制模块的使用,这一篇讲述下另外一个重要的外围模块Timer。
Timer模块同样也是系统自动加载的模块之一,其寄存器组映射的位置PERIPHERAL_TIMER_BASE为0x0a800000。Timer模块的原始时钟默认为20MHz。
下面描述每个寄存器的用法:
REG_TIMER1_LOAD:加载值寄存器。
W:设定加载值。遗憾的是只有16位的宽度,高位保留不可写入。
R:读取设定的加载值。
REG_TIMER1_VALUE:计数值寄存器。
W:None
R:读取当前的计数值。
REG_TIMER1_CONTROL:控制寄存器。
W:比较复杂。
Bit7:使能位,写1使能,写0停止计数。
Bit6:模式位,0为FREE,第一次计数后,Load值为0xFFFF。1为PERIODIC,每次都Load设置的加载值。
Bit3+Bit2:分频控制。00为1分频,01为16分频,10为256分频,11保留。
R:读取控制寄存器当前的值。
REG_TIMER1_INT_CLR:中断清除寄存器。
W:清除中断,只需要往Bit0上写1就可以清除中断。
R:None
REG_TIMER1_RESERVED0:未知,系统保留。
Timer2的寄存器组与Timer一致,没有任何差别。