1、理解51单片机的定时器工作原理:
2、ARM9计数器的理解单片机内部的计时功能是通过计数器的计数来实现的。每产生一个脉冲,则计数器加1。单片机中,计数器的脉冲周期 :T = 12/f (其中f 为晶振的频率),例如晶振的频率是12Mhz,则12/12*1000000 = 1 us ,即每微妙计数器加1。
如何才能得到精确的定时呢?那就要靠TCFG0和TCFG1这两个寄存器来配置定时器的频率,即要确定TCNTOn每递减一个数所需要的时间,它们之间是倒数的关系。
TCFG0和TCFG1两个寄存器如图:
(其中:MUX0~MUX4分别对应定时器timer0~timer4)
公式:定时器输出时钟频率=PCLK ÷ (prescaler+1) ÷ divider
其中prescaler值由TCFG0决定,divider值由TCFG1决定,而prescaler只能取0~255之间的整数,divider只能取2、4、8和16。比如已知PCLK为50MHz,而我们想得到某一定时器的输出时钟频率为25kHz,则依据公式可以使prescaler等于249,divider等于8。有了这个输出时钟频率,理论上我们通过设置寄存器TCNTBn就可以得到任意与0.04毫秒(1÷25000×1000)成整数倍关系的时间间隔了。例如我们想要得到1秒钟的延时,则使TCNTBn为25000(1000÷0.04)即可。
(1)、timer4的配置(精确延时0.5s)
rTCFG0 &= 0xFF00FF;</