📄 pll.txt
字号:
; generated by ARM C Compiler, ADS1.2 [Build 842]
; commandline [-errors .\err\pll.err -O0 -asm -g+ -cpu 5TEJ -fs -Wd -Ec -I.\include "-IC:\Program Files\ARM\ADSv1_2\INCLUDE"]
CODE32
AREA ||.text||, CODE, READONLY
Test_PLL PROC
;;;18 void Test_PLL(void)
;;;19 {
|L1.0|
000000 e92d4ff0 STMFD sp!,{r4-r11,lr}
000004 e24ddf4f SUB sp,sp,#0x13c
;;;20 int i,j,k;
;;;21 unsigned int saveCLKDIVN,saveMPLLCON;
;;;22 U32 mps[][6]={
000008 e3a02f4e MOV r2,#0x138
00000c e59f120c LDR r1,|L1.544|
000010 e1a0000d MOV r0,sp
000014 ebfffffe BL __rt_memcpy_w
;;;23 // 1:1:1
;;;24 /* 50000000, 42,1,2,0,0, //FCLK,MDIV,PDIV,SDIV,HCLKdiv,PCLKdiv
;;;25 56000000, 48,1,2,0,0,
;;;26 67000000, 59,1,2,0,0,
;;;27 79000000, 71,4,1,0,0,
;;;28 //84000000, 76,4,1,0,0,
;;;29 //90000000, 82,4,1,0,0,
;;;30 */
;;;31 // 1:1:2
;;;32 /*
;;;33 84000000, 76,4,1,0,1,
;;;34 90000000, 82,4,1,0,1,
;;;35 96000000, 56,2,1,0,1,
;;;36 101000000, 93,4,1,0,1,
;;;37 113000000,105,4,1,0,1,
;;;38 118000000, 51,1,1,0,1,
;;;39 124000000, 54,1,1,0,1,
;;;40 135000000, 82,2,1,0,1,
;;;41 */ //147000000, 41,2,0,0,1,
;;;42 //152000000, 68,4,0,0,1,
;;;43 //158000000, 71,4,0,0,1,
;;;44 // 1:2:2
;;;45 //84000000, 76,4,1,1,0,
;;;46 //90000000, 82,4,1,1,0,
;;;47 //96000000, 56,2,1,1,0,
;;;48 //101000000, 93,4,1,1,0,
;;;49 //113000000,105,4,1,1,0,
;;;50 //118000000, 51,1,1,1,0,
;;;51 //124000000, 54,1,1,1,0,
;;;52 //135000000, 82,2,1,1,0,
;;;53 //147000000, 41,2,0,1,0,
;;;54 //152000000, 68,4,0,1,0,
;;;55 //158000000, 71,4,0,1,0,
;;;56
;;;57 // 1:2:4
;;;58
;;;59 152000000, 30,1,0,1,0,
;;;60 156000000, 31,1,0,1,0,
;;;61 160000000, 32,1,0,1,1,
;;;62 164000000, 33,1,0,1,1,
;;;63 168000000, 34,1,0,1,0,
;;;64 172000000, 35,1,0,1,0,
;;;65 176000000, 36,1,0,1,0,
;;;66 180000000, 37,1,0,1,0,
;;;67 184000000, 38,1,0,1,0,
;;;68 188000000, 39,1,0,1,0,
;;;69 192000000, 40,1,0,1,0,
;;;70 196000000, 41,1,0,1,0,
;;;71 200000000, 42,1,0,1,0,
;;;72 /*
;;;73 204000000, 43,1,0,1,0,
;;;74 208000000, 44,1,0,1,0,
;;;75 212000000, 45,1,0,1,0,
;;;76 216000000, 46,1,0,1,0,
;;;77 220000000, 47,1,0,1,0,
;;;78 224000000, 48,1,0,1,0,
;;;79 228000000, 49,1,0,1,0,
;;;80 232000000, 50,1,0,1,0,
;;;81 236000000, 51,1,0,1,0,
;;;82 240000000, 52,1,0,1,0,
;;;83 244000000, 53,1,0,1,0,
;;;84 248000000, 54,1,0,1,0,
;;;85 252000000, 55,1,0,1,0,
;;;86 256000000, 56,1,0,1,0,
;;;87 260000000, 57,1,0,1,0,
;;;88 264000000, 58,1,0,1,0,
;;;89 268000000, 59,1,0,1,0,
;;;90 */
;;;91 /*
;;;92 170000000, 77,4,0,1,1,
;;;93 180000000, 82,4,0,1,1,
;;;94 186000000, 85,4,0,1,1,
;;;95 192000000, 56,2,0,1,1,
;;;96 202000000, 93,4,0,1,1,
;;;97 214000000, 99,4,0,1,1,
;;;98 220000000, 47,1,0,1,1,
;;;99 226000000,105,4,0,1,1,
;;;100 237000000, 71,2,0,1,1,
;;;101 */
;;;102 };
;;;103
;;;104 saveCLKDIVN=rCLKDIVN;
000018 e3a00440 MOV r0,#0x40000000
00001c e5900028 LDR r0,[r0,#0x28]
000020 e58d0138 STR r0,[sp,#0x138]
;;;105 saveMPLLCON=rMPLLCON;
000024 e3a00440 MOV r0,#0x40000000
000028 e5900010 LDR r0,[r0,#0x10]
00002c e1a07000 MOV r7,r0
;;;106
;;;107 LcdEnvidOnOff(0);
000030 e3a00000 MOV r0,#0
000034 ebfffffe BL LcdEnvidOnOff
;;;108 Uart_Printf("[PLL frequency change test]\n");
000038 e28f0f79 ADR r0,|L1.548|
00003c ebfffffe BL _printf
;;;109 Uart_TxEmpty(0);
000040 e3a00000 MOV r0,#0
000044 ebfffffe BL Uart_TxEmpty
;;;110 //rLOCKTIME=(3602<<16)|(0xfff<<0); // 3602 is about 300us at 12Mhz
;;;111 rLOCKTIME=0; // 3602 is about 300us at 12Mhz
000048 e3a00000 MOV r0,#0
00004c e3a01440 MOV r1,#0x40000000
000050 e5810000 STR r0,[r1,#0]
;;;112 rCLKCON &= ~(1<<1);
000054 e3a00440 MOV r0,#0x40000000
000058 e5900020 LDR r0,[r0,#0x20]
00005c e3c00002 BIC r0,r0,#2
000060 e3a01440 MOV r1,#0x40000000
000064 e5810020 STR r0,[r1,#0x20]
;;;113 Uart_Printf("LOCKTIME:0x%x, CLKCON:0x%x\n", rLOCKTIME, rCLKCON);
000068 e3a00440 MOV r0,#0x40000000
00006c e5900020 LDR r0,[r0,#0x20]
000070 e1a02000 MOV r2,r0
000074 e3a00440 MOV r0,#0x40000000
000078 e5900000 LDR r0,[r0,#0]
00007c e1a01000 MOV r1,r0
000080 e28f0f6f ADR r0,|L1.580|
000084 ebfffffe BL _printf
;;;114 srand(0); //Set a random starting point
000088 e3a00000 MOV r0,#0
00008c ebfffffe BL srand
;;;115
;;;116 // for(j=0;j<100000;j++)
;;;117 j=k=0;
000090 e3a00000 MOV r0,#0
000094 e1a06000 MOV r6,r0
000098 e1a05000 MOV r5,r0
;;;118 while(!Uart_GetKey())
00009c e1a00000 NOP
|L1.160|
0000a0 ebfffffe BL Uart_GetKey
0000a4 e3500000 CMP r0,#0
0000a8 1a000050 BNE |L1.496|
;;;119 {
;;;120 i=rand()/(float)RAND_MAX*(sizeof(mps)/24);
0000ac ebfffffe BL rand
0000b0 e1a0b000 MOV r11,r0
0000b4 ebfffffe BL _fflt
0000b8 e1a0a000 MOV r10,r0
0000bc e3a015c0 MOV r1,#0x30000000
0000c0 ebfffffe BL _fmul
0000c4 e1a09000 MOV r9,r0
0000c8 e59f1190 LDR r1,|L1.608|
0000cc ebfffffe BL _fmul
0000d0 e1a08000 MOV r8,r0
0000d4 ebfffffe BL _ffix
0000d8 e1a04000 MOV r4,r0
;;;121 //Uart_Printf("\nFCLK=%d",mps[i][0]);
;;;122 Uart_TxEmpty(0);
0000dc e3a00000 MOV r0,#0
0000e0 ebfffffe BL Uart_TxEmpty
;;;123 if((mps[i][4]==0)&&(mps[i][5]==0))
0000e4 e0840084 ADD r0,r4,r4,LSL #1
0000e8 e08d0180 ADD r0,sp,r0,LSL #3
0000ec e5900010 LDR r0,[r0,#0x10]
0000f0 e3500000 CMP r0,#0
0000f4 1a000012 BNE |L1.324|
0000f8 e0840084 ADD r0,r4,r4,LSL #1
0000fc e08d0180 ADD r0,sp,r0,LSL #3
000100 e5900014 LDR r0,[r0,#0x14]
000104 e3500000 CMP r0,#0
000108 1a00000d BNE |L1.324|
;;;124 {
;;;125 ChangeMPllValue(mps[i][1],mps[i][2],mps[i][3]); //Set MPS first
00010c e0843084 ADD r3,r4,r4,LSL #1
000110 e08d3183 ADD r3,sp,r3,LSL #3
000114 e593200c LDR r2,[r3,#0xc]
000118 e0843084 ADD r3,r4,r4,LSL #1
00011c e08d3183 ADD r3,sp,r3,LSL #3
000120 e5931008 LDR r1,[r3,#8]
000124 e0843084 ADD r3,r4,r4,LSL #1
000128 e08d3183 ADD r3,sp,r3,LSL #3
00012c e5930004 LDR r0,[r3,#4]
000130 ebfffffe BL ChangeMPllValue
;;;126 ChangeClockDivider(0,0); //And then set divider
000134 e3a01000 MOV r1,#0
000138 e3a00000 MOV r0,#0
00013c ebfffffe BL ChangeClockDivider
000140 ea000010 B |L1.392|
;;;127 }
;;;128 else
;;;129 {
;;;130 ChangeClockDivider(mps[i][4],mps[i][5]);
|L1.324|
000144 e0842084 ADD r2,r4,r4,LSL #1
000148 e08d2182 ADD r2,sp,r2,LSL #3
00014c e5921014 LDR r1,[r2,#0x14]
000150 e0842084 ADD r2,r4,r4,LSL #1
000154 e08d2182 ADD r2,sp,r2,LSL #3
000158 e5920010 LDR r0,[r2,#0x10]
00015c ebfffffe BL ChangeClockDivider
;;;131 ChangeMPllValue(mps[i][1],mps[i][2],mps[i][3]);
000160 e0843084 ADD r3,r4,r4,LSL #1
000164 e08d3183 ADD r3,sp,r3,LSL #3
000168 e593200c LDR r2,[r3,#0xc]
00016c e0843084 ADD r3,r4,r4,LSL #1
000170 e08d3183 ADD r3,sp,r3,LSL #3
000174 e5931008 LDR r1,[r3,#8]
000178 e0843084 ADD r3,r4,r4,LSL #1
00017c e08d3183 ADD r3,sp,r3,LSL #3
000180 e5930004 LDR r0,[r3,#4]
000184 ebfffffe BL ChangeMPllValue
;;;132 }
;;;133 Uart_Init((mps[i][0]/(mps[i][4]+1))/(mps[i][5]+1),115200); //PCLK, Baud Rate
|L1.392|
000188 e0842084 ADD r2,r4,r4,LSL #1
00018c e79d1182 LDR r1,[sp,r2,LSL #3]
000190 e0842084 ADD r2,r4,r4,LSL #1
000194 e08d2182 ADD r2,sp,r2,LSL #3
000198 e5922010 LDR r2,[r2,#0x10]
00019c e2820001 ADD r0,r2,#1
0001a0 ebfffffe BL __rt_udiv
0001a4 e1a09000 MOV r9,r0
0001a8 e0841084 ADD r1,r4,r4,LSL #1
0001ac e08d1181 ADD r1,sp,r1,LSL #3
0001b0 e5911014 LDR r1,[r1,#0x14]
0001b4 e2810001 ADD r0,r1,#1
0001b8 e1a01009 MOV r1,r9
0001bc ebfffffe BL __rt_udiv
0001c0 e1a08000 MOV r8,r0
0001c4 e59f1098 LDR r1,|L1.612|
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -