Boot中timer定时器的设置(3)

2、s3c24x0_get_base_timers()函数返回的就是timer寄存器空间的起始地址0x51000000

static inline struct s3c24x0_timers *s3c24x0_get_base_timers(void)

    return (struct s3c24x0_timers *)S3C24X0_TIMER_BASE;

3、

/* use PWM Timer 4 because it has no output */
    /* prescaler for Timer 4 is 16 */

这个注释是不是有问题呢,我怎么查不到timer4预分频器是16位的,都是8位。是不是要表达计数器是16位的呢?
 
4、writel(0x0ff,&timers->TCFG0)的作用是什么呢?在arch/arm/include/asm/io.h文件中既然有3处定义了这个函数,考察了一下只有下面被编译:

#define writel(v,a)        __arch_putl(v,a)

#define __arch_putl(v,a)        (*(volatile unsigned int *)(a) = (v))

分析:就是往a寄存器写入v.

这里就是往寄存器TCFG0写入0x0ff,先看下TCFG0寄存器信息:

Boot中timer定时器的设置

将timer0、1的预分频器的值写ff就是255,

其值N为: 0~255

输出频率为:PCLK ÷(N+1)

这时候N = 255,结合这篇文档  知道PCLK的频率是101.25MHz,输出频率就出来了,这时候最低,同时没有用到他们,所以不考虑了。t只考虑imer4,这时候N = 0,输出频率最大就是PCLK。为什么要设最大,先放着

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/eca2c79d2e59d3745d8e4b7814130343.html