6、汇编实现时钟代码设置详解1 1、时钟设置的步骤分析 (clock.S) 1、选择各时钟开关,暂时不使用PLL PLL 没有工作时 系统为24M时钟 ldr r1, = 0x0 ARM 中所有寄存器都是按块分的: 即 基地址+ 变址 可以实现更好的寻址 FinPLL :经过 FOUTPLL:经过PLL后的输出频率 APPL_SEL 让外部24MHZ原始时钟直接过去 2、设置锁定时间。 打开PLL后以后,有一个延时(锁定时间) ldr r1, = 0x00000FFF str r1, [r0,#APLL_LOCK_OFFSET] 3、设置分频系数,决定由PLL出来的最高时钟如何得到各个时钟的分时钟 4、设置PLL,主要设置PLL的倍频系数。决定输入端24MHZ的原始频率可以得到多大的输出频率。 5、打开PLL ,前面4步已经设置好了所有 的开关和分频系数,本步骤打开PLL开始工作。 总结:以上5步,真正涉及到的寄存器只有5个。 2、CLK_LOCK 寄存器的设置分析 设置PLL锁定延时的, 创新必然基于继承 7、汇编实现时钟代码设置详解2 1、PLL倍频相关的计算 我们设置了APLL和MPLL两个,其他两个我们没有管。 APLL和 MPLL设置的关键都是M,S,P三个值,这三个值都这来自于官方数据手册的推荐值 M,P,S的设置依赖(C语言位运算)中讲过的位运算技术。 APLL_CON 和MPLL_CON计算公式,位定义是一样的 8、C语言实现时钟代码设置详解 1、C语言和汇编语言操作寄存器不同 2、C语言优势:位运算更加简单 3、用C语言重写时钟初始化代码