📄 pll.txt
字号:
;;;150 rMPLLCON = mpllcon_bk;
0002b4 e3a0044c MOV r0,#0x4c000000
0002b8 e59d1024 LDR r1,[sp,#0x24]
0002bc e5801004 STR r1,[r0,#4]
;;;151 rCLKDIVN = clkdivn_bk;
0002c0 e3a0044c MOV r0,#0x4c000000
0002c4 e59d1020 LDR r1,[sp,#0x20]
0002c8 e5801014 STR r1,[r0,#0x14]
;;;152 rCAMDIVN = camdivn_bk;
0002cc e3a0044c MOV r0,#0x4c000000
0002d0 e59d101c LDR r1,[sp,#0x1c]
0002d4 e5801018 STR r1,[r0,#0x18]
;;;153 Calc_Clock(1);
0002d8 e3a00001 MOV r0,#1
0002dc ebfffffe BL Calc_Clock
;;;154
;;;155 }
0002e0 e28dd02c ADD sp,sp,#0x2c
0002e4 e8bd8ff0 LDMFD sp!,{r4-r11,pc}
|L1.744|
0002e8 4c4c505b DCB "[PLL"
0002ec 65726620 DCB " fre"
0002f0 6e657571 DCB "quen"
0002f4 63207963 DCB "cy c"
0002f8 676e6168 DCB "hang"
0002fc 65742065 DCB "e te"
000300 31207473 DCB "st 1"
000304 302c3030 DCB "00,0"
000308 74203030 DCB "00 t"
00030c 73656d69 DCB "imes"
000310 00000a5d DCB "]\n\0\0"
|L1.788|
000314 005a55a5 DCD 0x005a55a5
|L1.792|
000318 00000000 DCD No_Of_Mps_Val
|L1.796|
00031c 00000000 DCD Mps_Val
|L1.800|
000320 5d64255b DCB "[%d]"
000324 00000020 DCB " \0\0\0"
|L1.808|
000328 14dc9380 DCD 0x14dc9380
|L1.812|
00032c 1a39de00 DCD 0x1a39de00
|L1.816|
000330 42c80000 DCD 0x42c80000
|L1.820|
000334 746c6f56 DCB "Volt"
000338 3a656761 DCB "age:"
00033c 322e3425 DCB "%4.2"
000340 5d565b66 DCB "f[V]"
000344 0000000a DCB "\n\0\0\0"
|L1.840|
000348 00000000 DCD Hclk
|L1.844|
00034c 33333333 DCFD 0x401f333333333333 ; 7.8
000350 401f3333
|L1.852|
000354 00000000 DCFD 0x412e848000000000 ; 1000000.0
000358 412e8480
|L1.860|
00035c 4c504d0a DCB "\nMPL"
000360 6863204c DCB "L ch"
000364 65676e61 DCB "ange"
000368 73657420 DCB " tes"
00036c 4b4f2074 DCB "t OK"
000370 00000a2e DCB ".\n\0\0"
|L1.884|
000374 7465520a DCB "\nRet"
000378 206e7275 DCB "urn "
00037c 50206f74 DCB "to P"
000380 69766572 DCB "revi"
000384 2073756f DCB "ous "
000388 74746573 DCB "sett"
00038c 2e676e69 DCB "ing."
000390 0000000a DCB "\n\0\0\0"
ENDP
Calc_Locktime PROC
;;;162 U32 Calc_Locktime(U32 lock_time)
;;;163 {
000394 e92d40f8 STMFD sp!,{r3-r7,lr}
000398 e1a05000 MOV r5,r0
;;;164 U32 lock_count=0;
00039c e3a04000 MOV r4,#0
;;;165
;;;166 lock_count = (U32)((float)lock_time/((float)TIME_OF_XTAL));
0003a0 e1a00005 MOV r0,r5
0003a4 ebfffffe BL _ffltu
0003a8 e1a07000 MOV r7,r0
0003ac e59f1108 LDR r1,|L1.1212|
0003b0 ebfffffe BL _fdiv
0003b4 e1a06000 MOV r6,r0
0003b8 ebfffffe BL _ffixu
0003bc e1a04000 MOV r4,r0
;;;167
;;;168 return lock_count;
0003c0 e1a00004 MOV r0,r4
;;;169 }
0003c4 e8bd80f8 LDMFD sp!,{r3-r7,pc}
ENDP
Test_Locktime PROC
;;;171 void Test_Locktime(void)
;;;172 {
0003c8 e92d40f8 STMFD sp!,{r3-r7,lr}
;;;173 int temp;
;;;174 int i,j, mdiv, pdiv, sdiv, sval, fclk, hdiv_val, pdiv_val;
;;;175 U32 lock_time=300, lock_count=12048; //Unit is us.
0003cc e3a07f4b MOV r7,#0x12c
0003d0 e59f50e8 LDR r5,|L1.1216|
;;;176 U32 mpllcon_bk;
;;;177
;;;178 // clock register backup.
;;;179 mpllcon_bk = rMPLLCON;
0003d4 e3a0044c MOV r0,#0x4c000000
0003d8 e5900004 LDR r0,[r0,#4]
0003dc e1a06000 MOV r6,r0
;;;180
;;;181 Uart_Printf("[PLL Lock time test 100,000 times]\n");
0003e0 e28f00dc ADR r0,|L1.1220|
0003e4 ebfffffe BL Uart_Printf
;;;182 Uart_Printf("Lock time range: 300us - %d [us]\n", (U32)(0xffff*TIME_OF_XTAL));
0003e8 e59f10f8 LDR r1,|L1.1256|
0003ec e28f00f8 ADR r0,|L1.1260|
0003f0 ebfffffe BL Uart_Printf
;;;183 Uart_Printf("Input Lock time[us]: ");
0003f4 e28f0f45 ADR r0,|L1.1296|
0003f8 ebfffffe BL Uart_Printf
;;;184 lock_time = Uart_GetIntNum();
0003fc ebfffffe BL Uart_GetIntNum
000400 e1a07000 MOV r7,r0
;;;185
;;;186 lock_count = Calc_Locktime(lock_time); // lock_time [us]
000404 e1a00007 MOV r0,r7
000408 ebfffffe BL Calc_Locktime
00040c e1a05000 MOV r5,r0
;;;187 rLOCKTIME=((U32)(lock_count)<<16)|((U32)(lock_count)<<0);
000410 e1850805 ORR r0,r5,r5,LSL #16
000414 e3a0144c MOV r1,#0x4c000000
000418 e5810000 STR r0,[r1,#0]
;;;188 Uart_Printf("Locktime register value is %d(%xh).\n", rLOCKTIME&0xffff, rLOCKTIME&0xffff);
00041c e3a0044c MOV r0,#0x4c000000
000420 e5900000 LDR r0,[r0,#0]
000424 e1a02800 MOV r2,r0,LSL #16
000428 e1a02822 MOV r2,r2,LSR #16
00042c e3a0044c MOV r0,#0x4c000000
000430 e5900000 LDR r0,[r0,#0]
000434 e1a01800 MOV r1,r0,LSL #16
000438 e1a01821 MOV r1,r1,LSR #16
00043c e28f00e4 ADR r0,|L1.1320|
000440 ebfffffe BL Uart_Printf
;;;189
;;;190 Uart_Printf("Clock will be locked after LED7 is ON.\n");
000444 e28f0f41 ADR r0,|L1.1360|
000448 ebfffffe BL Uart_Printf
;;;191
;;;192 i=0;
00044c e3a04000 MOV r4,#0
;;;193 //ChangeClockDivider(12,12); // 1:2:4
;;;194 while(1)
000450 e1a00000 NOP
|L1.1108|
000454 e1a00000 NOP
;;;195 {
;;;196 if(Uart_GetKey()!=0x0)
000458 ebfffffe BL Uart_GetKey
00045c e3500000 CMP r0,#0
000460 0a000000 BEQ |L1.1128|
;;;197 break;
000464 ea000010 B |L1.1196|
;;;198 if(i>100000)
|L1.1128|
000468 e254cb60 SUBS r12,r4,#0x18000
00046c a25cce6a SUBGES r12,r12,#0x6a0
000470 da000000 BLE |L1.1144|
;;;199 break;
000474 ea00000c B |L1.1196|
;;;200 if(i%2)
|L1.1144|
000478 e3140001 TST r4,#1
00047c 0a000004 BEQ |L1.1172|
;;;201 {
;;;202 Led_Display(0x8);
000480 e3a00008 MOV r0,#8
000484 ebfffffe BL Led_Display
;;;203 rMPLLCON = mpllcon_bk;
000488 e3a0044c MOV r0,#0x4c000000
00048c e5806004 STR r6,[r0,#4]
000490 ea000003 B |L1.1188|
;;;204 }
;;;205 else
;;;206 {
;;;207 Led_Display(0x0);
|L1.1172|
000494 e3a00000 MOV r0,#0
000498 ebfffffe BL Led_Display
;;;208 rMPLLCON = mpllcon_bk;
00049c e3a0044c MOV r0,#0x4c000000
0004a0 e5806004 STR r6,[r0,#4]
;;;209 }
;;;210 //Delay(1000);
;;;211 i++;
|L1.1188|
0004a4 e2844001 ADD r4,r4,#1
;;;212 }
0004a8 eaffffe9 B |L1.1108|
;;;213 Uart_Printf("[PLL Lock time test %d times end]\n",i-1);
|L1.1196|
0004ac e2441001 SUB r1,r4,#1
0004b0 e28f00c0 ADR r0,|L1.1400|
0004b4 ebfffffe BL Uart_Printf
;;;214 }
0004b8 e8bd80f8 LDMFD sp!,{r3-r7,pc}
|L1.1212|
0004bc 3d71dfe1 DCD 0x3d71dfe1
|L1.1216|
0004c0 00002f10 DCD 0x00002f10
|L1.1220|
0004c4 4c4c505b DCB "[PLL"
0004c8 636f4c20 DCB " Loc"
0004cc 6974206b DCB "k ti"
0004d0 7420656d DCB "me t"
0004d4 20747365 DCB "est "
0004d8 2c303031 DCB "100,"
0004dc 20303030 DCB "000 "
0004e0 656d6974 DCB "time"
0004e4 000a5d73 DCB "s]\n\0"
|L1.1256|
0004e8 00000f1d DCD 0x00000f1d
|L1.1260|
0004ec 6b636f4c DCB "Lock"
0004f0 6d697420 DCB " tim"
0004f4 61722065 DCB "e ra"
0004f8 3a65676e DCB "nge:"
0004fc 30303320 DCB " 300"
000500 2d207375 DCB "us -"
000504 20642520 DCB " %d "
000508 5d73755b DCB "[us]"
00050c 0000000a DCB "\n\0\0\0"
|L1.1296|
000510 75706e49 DCB "Inpu"
000514 6f4c2074 DCB "t Lo"
000518 74206b63 DCB "ck t"
00051c 5b656d69 DCB "ime["
000520 3a5d7375 DCB "us]:"
000524 00000020 DCB " \0\0\0"
|L1.1320|
000528 6b636f4c DCB "Lock"
00052c 656d6974 DCB "time"
000530 67657220 DCB " reg"
000534 65747369 DCB "iste"
000538 61762072 DCB "r va"
00053c 2065756c DCB "lue "
000540 25207369 DCB "is %"
000544 78252864 DCB "d(%x"
000548 0a2e2968 DCB "h).\n"
00054c 00000000 DCB "\0\0\0\0"
|L1.1360|
000550 636f6c43 DCB "Cloc"
000554 6977206b DCB "k wi"
000558 62206c6c DCB "ll b"
00055c 6f6c2065 DCB "e lo"
000560 64656b63 DCB "cked"
000564 74666120 DCB " aft"
000568 4c207265 DCB "er L"
00056c 20374445 DCB "ED7 "
000570 4f207369 DCB "is O"
000574 000a2e4e DCB "N.\n\0"
|L1.1400|
000578 4c4c505b DCB "[PLL"
00057c 636f4c20 DCB " Loc"
000580 6974206b DCB "k ti"
000584 7420656d DCB "me t"
000588 20747365 DCB "est "
00058c 74206425 DCB "%d t"
000590 73656d69 DCB "imes"
000594 646e6520 DCB " end"
000598 00000a5d DCB "]\n\0\0"
ENDP
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -