要写一个时钟的程序,包括年、月、日、时、分、秒、毫秒、微秒、纳秒。
系统频率是100M,想采用定时器 获得精确度为ns级的时间,定时器初始化配置如下,
void Init_Timers(void)
{
*pTIMER0_CONFIG = EMU_RUN | IRQ_ENA | PERIOD_CNT | PWM_OUT;
*pTIMER0_PERIOD = 1;
*pTIMER0_WIDTH = 1;
*pTIMER_ENABLE = 0x0001;
}
这个配置是想让定时器计数寄存器(TIMER0_COUNTER )每10ns记一次数,来获得ns级的时间,但不使用定时器中断的方法来计数,
因为使用定时器中断的话,每10ns进一次中断导致其他程序无法执行。
我这里有个秒脉冲中断,当有秒脉冲到来时,想让定时器计数器中的值清零。
问题:
1、不使用定时器中断,那么定时器计数寄存器的只是一直增加,直到最大范围吗?
2、 获得定时器计数的是这个count=*pTIMER0_COUNTER;语句吗?,我用这个语句得到的计数值不对,一直是1,是因为周期设置成1的原因吗?
3、秒脉冲到来时,如何让计数器的值清零?
4、如果我这个想法不对,您有什么好的方法来实现ns级的时间。