今天写了点代码,不过还没想到怎么测试,先贴出来了,大家给个意见,
写了这个代码,在真正感觉到自己是个菜鸟,这个代码也是按照前面几个帖子的步骤写的:
AREA CLOCK, CODE
ENTRY
start
; 关闭看门狗
ldr r0, =0xE2700000
mov r1, #0
str r1, [r0]
;第一步: 打开一个PLL,如:APLL_CON[31] = 1
ldr r0 , = 0xE0100100 ;APLL_CON0
ldr r1 , = 0xE0100108 ;MPLL_CON0
ldr r2 , = 0x1<<31
str r2 , [r0]
str r2 , [r1]
;第二步: 等待lock的上锁时间,APLL_LOCK[0-15] = 0xFFFF
ldr r0 , = 0xE0100000 ;APLL_LOCK
ldr r1 , = 0xE0100008 ;MPLL_LOCK
ldr r3 , = 0x0000ffff
str r3 , [r0]
str r3 , [r1]
;第三步: 选择PLL的输出时钟代替参考的输入时钟,在PLL输出时钟稳定的时,如APLL_SEL = 1、CLK_SRC0 = 0x10001111
ldr r0 , = 0xE0100200 ;CLK_SRC0
ldr r1 , = 0x10001111
str r1, [r0]
;第四步: 设置PLL的输出频率,即PMS,这几位的值,如:APLL_CON0的M=0x7d,P=0x3,S=0x1
ldr r0 , = 0xE0100100 ;APLL_CON0
ldr r1 , = 0xE0100108 ;MPLL_CON
ldr r3 , = 0x7d <<16 | 3 <<8 | 0x1
ldr r4 , = 0x29b<<16 | 0xc<<8 | 0x1
str r3 , [r0]
str r4 , [r1]
;第五步: 用除法器改变系统的输出频率,即设置寄存器如:CLK_DIV0 =0x14131440
ldr r0 , = 0xE0100300 ;CLK_DIV0
ldr r1 , = 0x14131440
str r1, [r0]
END
这个代码编译器用的是 armasm就是ads的编译器
这个代码有毛病,,,
需要把第一步放到第四步后边,就可以了,,,嘿嘿