各位好
我驱动中需要用到TIMER1 TIMER2 TIMER3 ,我对TIMER2 和TIMER3 的TCFG0改了倍频值,由于TIMER2 3 4共用一个倍频,现在将2 3改了,
timer4也被改了,timer4是用到系统时钟的,现在我上层的定时器应用程序隔5秒才运行一次(本来是1秒一次),请教,如何单独设置TIMER2 TIMER3,保持
TIMER4不变呢? 还是我对寄存器理解错了,倍频值可以对单个TIMER进行更改,更改后,只要启动TCON,更新即可,这样类推,对2 3 更改,只要不改变TCON的TIMER4
设置就可以了?谢谢大家了
下面是内核中对TIMER4进行的设置,是不是像以下做就可以了吗?
复制代码- tcnt--;
- printk("timer tcon=%08lx, tcnt %04lx, tcfg %08lx,%08lx, usec %08lx\n",
- tcon, tcnt, tcfg0, tcfg1, timer_usec_ticks);
- /* check to see if timer is within 16bit range... */
- if (tcnt > 0xffff) {
- panic("setup_timer: HZ is too small, cannot configure timer!");
- return;
- }
- __raw_writel(tcfg1, S3C2410_TCFG1);
- __raw_writel(tcfg0, S3C2410_TCFG0);
- timer_startval = tcnt;
- __raw_writel(tcnt, S3C2410_TCNTB(4));
- /* ensure timer is stopped... */
- tcon &= ~(7<<20);
- tcon |= S3C2410_TCON_T4RELOAD;
- tcon |= S3C2410_TCON_T4MANUALUPD;
- __raw_writel(tcon, S3C2410_TCON);
- __raw_writel(tcnt, S3C2410_TCNTB(4));
- __raw_writel(tcnt, S3C2410_TCMPB(4));
- /* start the timer running */
- tcon |= S3C2410_TCON_T4START;
- tcon &= ~S3C2410_TCON_T4MANUALUPD;
- __raw_writel(tcon, S3C2410_TCON);
|