ARM9定时器理解和寄存器的配置

本文介绍了ARM9单片机中定时器的工作原理,通过计数器和TCFG0、TCFG1寄存器配置定时器频率,以达到精确延时的目的。详细解析了如何计算prescaler和divider的值,以及如何通过设置寄存器TCNTBn实现不同时间间隔的延时。示例代码展示了timer4和timer3的配置,用于实现0.5秒和1秒的精确延时。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、理解51单片机的定时器工作原理:

单片机内部的计时功能是通过计数器的计数来实现的。每产生一个脉冲,则计数器加1。单片机中,计数器的脉冲周期 :T = 12/f (其中f 为晶振的频率),例如晶振的频率是12Mhz,则12/12*1000000 = 1 us ,即每微妙计数器加1。


2、ARM9计数器的理解

如何才能得到精确的定时呢?那就要靠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;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值