ChipTest/PAN159/PAN159-Template/SampleCode/Template/Keil/lst/clk.txt
2021-09-26 17:19:12 +08:00

1184 lines
48 KiB
Plaintext

; generated by Component: ARM Compiler 5.06 update 4 (build 422) Tool: ArmCC [4d3604]
; commandline ArmCC [--c99 --list --split_sections --debug -c --asm --interleave -o.\obj\clk.o --asm_dir=.\lst\ --list_dir=.\lst\ --depend=.\obj\clk.d --cpu=Cortex-M0 --apcs=interwork -O3 --diag_suppress=9931 -I..\..\..\Library\CMSIS\Include -I..\..\..\Library\Device\Nuvoton\Mini58Series\Include -I..\..\..\Library\StdDriver\inc -I..\..\Template -I..\..\..\Library\StdDriver\driver -I.\RTE\_Template -ID:\Keil_v5\ARM\PACK\Nuvoton\NuMicro_DFP\1.0.9\Device\Mini58\Include -ID:\Keil_v5\ARM\CMSIS\Include -D__MICROLIB -D__UVISION_VERSION=523 --omf_browse=.\obj\clk.crf ..\..\..\Library\StdDriver\src\clk.c]
THUMB
AREA ||i.CLK_DisableCKO||, CODE, READONLY, ALIGN=2
CLK_DisableCKO PROC
;;;28 */
;;;29 void CLK_DisableCKO(void)
000000 4802 LDR r0,|L1.12|
;;;30 {
;;;31 /* Disable CKO clock source */
;;;32 CLK->APBCLK &= (~CLK_APBCLK_CLKOCKEN_Msk);
000002 6881 LDR r1,[r0,#8]
000004 2240 MOVS r2,#0x40
000006 4391 BICS r1,r1,r2
000008 6081 STR r1,[r0,#8]
;;;33 }
00000a 4770 BX lr
;;;34
ENDP
|L1.12|
DCD 0x50000200
AREA ||i.CLK_DisableModuleClock||, CODE, READONLY, ALIGN=2
CLK_DisableModuleClock PROC
;;;399 */
;;;400 void CLK_DisableModuleClock(uint32_t u32ModuleIdx)
000000 0fc1 LSRS r1,r0,#31
;;;401 {
;;;402 *(volatile uint32_t *)((uint32_t)&CLK->AHBCLK+(MODULE_APBCLK(u32ModuleIdx)*4)) &= ~(1<<MODULE_IP_EN_Pos(u32ModuleIdx));
000002 008a LSLS r2,r1,#2
000004 4904 LDR r1,|L2.24|
000006 1851 ADDS r1,r2,r1
000008 684a LDR r2,[r1,#4]
00000a 06c3 LSLS r3,r0,#27
00000c 0edb LSRS r3,r3,#27
00000e 2001 MOVS r0,#1
000010 4098 LSLS r0,r0,r3
000012 4382 BICS r2,r2,r0
000014 604a STR r2,[r1,#4]
;;;403 }
000016 4770 BX lr
;;;404
ENDP
|L2.24|
DCD 0x50000200
AREA ||i.CLK_DisablePLL||, CODE, READONLY, ALIGN=2
CLK_DisablePLL PROC
;;;559 */
;;;560 void CLK_DisablePLL(void)
000000 4802 LDR r0,|L3.12|
;;;561 {
;;;562 CLK->PLLCTL |= CLK_PLLCTL_PD_Msk;
000002 6a01 LDR r1,[r0,#0x20]
000004 01c2 LSLS r2,r0,#7
000006 4311 ORRS r1,r1,r2
000008 6201 STR r1,[r0,#0x20]
;;;563 }
00000a 4770 BX lr
;;;564
ENDP
|L3.12|
DCD 0x50000200
AREA ||i.CLK_DisableSysTick||, CODE, READONLY, ALIGN=2
CLK_DisableSysTick PROC
;;;320 */
;;;321 void CLK_DisableSysTick(void)
000000 4901 LDR r1,|L4.8|
;;;322 {
;;;323 SysTick->CTRL = 0; /* Set System Tick counter disabled */
000002 2000 MOVS r0,#0
000004 6108 STR r0,[r1,#0x10]
;;;324 }
000006 4770 BX lr
;;;325
ENDP
|L4.8|
DCD 0xe000e000
AREA ||i.CLK_DisableXtalRC||, CODE, READONLY, ALIGN=2
CLK_DisableXtalRC PROC
;;;349 */
;;;350 void CLK_DisableXtalRC(uint32_t u32ClkMask)
000000 4902 LDR r1,|L5.12|
;;;351 {
;;;352 CLK->PWRCTL &=~u32ClkMask;
000002 680a LDR r2,[r1,#0]
000004 4382 BICS r2,r2,r0
000006 600a STR r2,[r1,#0]
;;;353 }
000008 4770 BX lr
;;;354
ENDP
00000a 0000 DCW 0x0000
|L5.12|
DCD 0x50000200
AREA ||i.CLK_EnableCKO||, CODE, READONLY, ALIGN=2
CLK_EnableCKO PROC
;;;52 */
;;;53 void CLK_EnableCKO(uint32_t u32ClkSrc, uint32_t u32ClkDiv, uint32_t u32ClkDivBy1En)
000000 0152 LSLS r2,r2,#5
;;;54 {
;;;55 /* CKO = clock source / 2^(u32ClkDiv + 1) */
;;;56 CLK->CLKOCTL = CLK_CLKOCTL_CLKOEN_Msk | u32ClkDiv | u32ClkDivBy1En<<CLK_CLKOCTL_DIV1EN_Pos;
000002 430a ORRS r2,r2,r1
000004 2110 MOVS r1,#0x10
000006 430a ORRS r2,r2,r1
000008 4905 LDR r1,|L6.32|
00000a 624a STR r2,[r1,#0x24]
;;;57
;;;58 /* Enable CKO clock source */
;;;59 CLK->APBCLK |= CLK_APBCLK_CLKOCKEN_Msk;
00000c 688a LDR r2,[r1,#8]
00000e 2340 MOVS r3,#0x40
000010 431a ORRS r2,r2,r3
000012 608a STR r2,[r1,#8]
;;;60
;;;61 /* Select CKO clock source */
;;;62 CLK->CLKSEL2 = (CLK->CLKSEL2 & (~CLK_CLKSEL2_CLKOSEL_Msk)) | u32ClkSrc;
000014 69ca LDR r2,[r1,#0x1c]
000016 230c MOVS r3,#0xc
000018 439a BICS r2,r2,r3
00001a 4302 ORRS r2,r2,r0
00001c 61ca STR r2,[r1,#0x1c]
;;;63 }
00001e 4770 BX lr
;;;64
ENDP
|L6.32|
DCD 0x50000200
AREA ||i.CLK_EnableModuleClock||, CODE, READONLY, ALIGN=2
CLK_EnableModuleClock PROC
;;;374 */
;;;375 void CLK_EnableModuleClock(uint32_t u32ModuleIdx)
000000 0fc1 LSRS r1,r0,#31
;;;376 {
;;;377 *(volatile uint32_t *)((uint32_t)&CLK->AHBCLK+(MODULE_APBCLK(u32ModuleIdx)*4)) |= 1<<MODULE_IP_EN_Pos(u32ModuleIdx);
000002 008a LSLS r2,r1,#2
000004 4904 LDR r1,|L7.24|
000006 1851 ADDS r1,r2,r1
000008 684a LDR r2,[r1,#4]
00000a 06c3 LSLS r3,r0,#27
00000c 0edb LSRS r3,r3,#27
00000e 2001 MOVS r0,#1
000010 4098 LSLS r0,r0,r3
000012 4302 ORRS r2,r2,r0
000014 604a STR r2,[r1,#4]
;;;378 }
000016 4770 BX lr
;;;379
ENDP
|L7.24|
DCD 0x50000200
AREA ||i.CLK_EnablePLL||, CODE, READONLY, ALIGN=2
CLK_EnablePLL PROC
;;;414 */
;;;415 uint32_t CLK_EnablePLL(uint32_t u32PllClkSrc, uint32_t u32PllFreq)
000000 b5f3 PUSH {r0,r1,r4-r7,lr}
;;;416 {
000002 b08b SUB sp,sp,#0x2c
000004 460c MOV r4,r1
;;;417 uint32_t u32PllSrcClk, u32NR, u32NF, u32NO, u32CLK_SRC , u32NRT;
;;;418 uint32_t u32Tmp, u32Tmp2, u32Tmp3, u32Min, u32MinNF, u32MinNR,u32Best;
;;;419
;;;420 /* Disable PLL first to avoid unstable when setting PLL */
;;;421 CLK_DisablePLL();
000006 f7fffffe BL CLK_DisablePLL
;;;422
;;;423 /* PLL source clock is from HXT */
;;;424 if(u32PllClkSrc == CLK_PLLCTL_PLLSRC_HXT) {
00000a 980b LDR r0,[sp,#0x2c]
00000c 2800 CMP r0,#0
;;;425 /* Enable HXT clock */
;;;426 CLK->PWRCTL = (CLK->PWRCTL & ~CLK_PWRCTL_XTLEN_Msk) | CLK_PWRCTL_XTLEN_HXT ;
;;;427
;;;428 /* Wait for HXT clock ready */
;;;429 CLK_WaitClockReady(CLK_STATUS_XTLSTB_Msk);
;;;430
;;;431 /* Select PLL source clock from HXT */
;;;432 u32CLK_SRC = CLK_PLLCTL_PLLSRC_HXT;
;;;433 u32PllSrcClk = __XTAL;
;;;434
;;;435 /* u32NR start from 2 */
;;;436 u32NRT = 2;
;;;437 }
;;;438
;;;439 /* PLL source clock is from HIRC */
;;;440 else {
;;;441 /* Enable HIRC clock */
;;;442 CLK->PWRCTL |= CLK_PWRCTL_HIRCEN_Msk;
00000e 4874 LDR r0,|L8.480|
000010 6801 LDR r1,[r0,#0]
000012 d013 BEQ |L8.60|
000014 2204 MOVS r2,#4
000016 4311 ORRS r1,r1,r2
000018 6001 STR r1,[r0,#0]
;;;443
;;;444 /* Wait for HIRC clock ready */
;;;445 CLK_WaitClockReady(CLK_STATUS_HIRCSTB_Msk);
00001a 2010 MOVS r0,#0x10
00001c f7fffffe BL CLK_WaitClockReady
;;;446
;;;447 /* Select PLL source clock from HIRC */
;;;448 u32CLK_SRC = CLK_PLLCTL_PLLSRC_HIRC;
000020 2001 MOVS r0,#1
000022 04c0 LSLS r0,r0,#19
;;;449 u32PllSrcClk = __HIRC;
000024 9009 STR r0,[sp,#0x24]
000026 486f LDR r0,|L8.484|
;;;450
;;;451 /* u32NR start from 4 when FIN = 22.1184MHz to avoid calculation overflow */
;;;452 u32NRT = 4;
000028 9000 STR r0,[sp,#0]
00002a 2004 MOVS r0,#4
|L8.44|
;;;453 }
;;;454
;;;455 /* Select "NO" according to request frequency */
;;;456 if((u32PllFreq <= FREQ_200MHZ) && (u32PllFreq > FREQ_100MHZ)) {
00002c 9008 STR r0,[sp,#0x20]
00002e 486e LDR r0,|L8.488|
000030 496e LDR r1,|L8.492|
000032 1820 ADDS r0,r4,r0
000034 4288 CMP r0,r1
000036 d80e BHI |L8.86|
;;;457 u32NO = 0;
000038 2500 MOVS r5,#0
;;;458 u32PllFreq = u32PllFreq;
00003a e01d B |L8.120|
|L8.60|
00003c 0889 LSRS r1,r1,#2 ;426
00003e 0089 LSLS r1,r1,#2 ;426
000040 1c49 ADDS r1,r1,#1 ;426
000042 6001 STR r1,[r0,#0] ;426
000044 2001 MOVS r0,#1 ;429
000046 f7fffffe BL CLK_WaitClockReady
00004a 2000 MOVS r0,#0 ;432
00004c 9009 STR r0,[sp,#0x24] ;433
00004e 4868 LDR r0,|L8.496|
000050 9000 STR r0,[sp,#0] ;436
000052 2002 MOVS r0,#2 ;436
000054 e7ea B |L8.44|
|L8.86|
;;;459 } else if((u32PllFreq <= FREQ_100MHZ) && (u32PllFreq >= FREQ_50MHZ)) {
000056 4867 LDR r0,|L8.500|
000058 4966 LDR r1,|L8.500|
00005a 1820 ADDS r0,r4,r0
00005c 4249 RSBS r1,r1,#0
00005e 4288 CMP r0,r1
000060 d802 BHI |L8.104|
;;;460 u32NO = 1;
000062 2501 MOVS r5,#1
;;;461 u32PllFreq = u32PllFreq << 1;
000064 0064 LSLS r4,r4,#1
000066 e007 B |L8.120|
|L8.104|
;;;462 } else if((u32PllFreq < FREQ_50MHZ) && (u32PllFreq >= FREQ_25MHZ)) {
000068 4863 LDR r0,|L8.504|
00006a 4963 LDR r1,|L8.504|
00006c 1820 ADDS r0,r4,r0
00006e 4249 RSBS r1,r1,#0
000070 4288 CMP r0,r1
000072 d27d BCS |L8.368|
;;;463 u32NO = 3;
000074 2503 MOVS r5,#3
;;;464 u32PllFreq = u32PllFreq << 2;
000076 00a4 LSLS r4,r4,#2
|L8.120|
;;;465 } else {
;;;466 /* Wrong frequency request. Just return default setting. */
;;;467 goto lexit;
;;;468 }
;;;469
;;;470 /* Find best solution */
;;;471 u32Min = (uint32_t) - 1;
000078 2600 MOVS r6,#0
00007a 43f6 MVNS r6,r6
;;;472 u32MinNR = 0;
;;;473 u32MinNF = 0;
;;;474 for(u32NR=u32NRT; u32NR <= 33; u32NR++) {
00007c 9f08 LDR r7,[sp,#0x20]
00007e e022 B |L8.198|
|L8.128|
;;;475 u32Tmp = u32PllSrcClk / u32NR;
000080 4639 MOV r1,r7
000082 9800 LDR r0,[sp,#0]
000084 f7fffffe BL __aeabi_uidivmod
;;;476 if((u32Tmp > 1600000) && (u32Tmp < 15000000)) {
000088 495c LDR r1,|L8.508|
00008a 4684 MOV r12,r0 ;475
00008c 1841 ADDS r1,r0,r1
00008e 485c LDR r0,|L8.512|
000090 4281 CMP r1,r0
000092 d217 BCS |L8.196|
;;;477 for(u32NF = 2; u32NF <= 513; u32NF++) {
;;;478 u32Tmp2 = u32Tmp * u32NF;
;;;479 if((u32Tmp2 >= 100000000) && (u32Tmp2 <= 200000000)) {
000094 4b55 LDR r3,|L8.492|
000096 2202 MOVS r2,#2 ;477
000098 1c5b ADDS r3,r3,#1
|L8.154|
00009a 4853 LDR r0,|L8.488|
00009c 4661 MOV r1,r12 ;478
00009e 4351 MULS r1,r2,r1 ;478
0000a0 1c40 ADDS r0,r0,#1
0000a2 1808 ADDS r0,r1,r0
0000a4 4298 CMP r0,r3
0000a6 d809 BHI |L8.188|
;;;480 u32Tmp3 = (u32Tmp2 > u32PllFreq) ? u32Tmp2 - u32PllFreq : u32PllFreq - u32Tmp2;
0000a8 42a1 CMP r1,r4
0000aa d901 BLS |L8.176|
0000ac 1b08 SUBS r0,r1,r4
0000ae e000 B |L8.178|
|L8.176|
0000b0 1a60 SUBS r0,r4,r1
|L8.178|
;;;481 if(u32Tmp3 < u32Min) {
0000b2 42b0 CMP r0,r6
0000b4 d202 BCS |L8.188|
;;;482 u32Min = u32Tmp3;
0000b6 0006 MOVS r6,r0
;;;483 u32MinNR = u32NR;
;;;484 u32MinNF = u32NF;
;;;485 /* Break when get good results */
;;;486 if(u32Min == 0) {
0000b8 9204 STR r2,[sp,#0x10]
0000ba d00c BEQ |L8.214|
|L8.188|
0000bc 4851 LDR r0,|L8.516|
0000be 1c52 ADDS r2,r2,#1 ;477
0000c0 4282 CMP r2,r0 ;477
0000c2 d9ea BLS |L8.154|
|L8.196|
0000c4 1c7f ADDS r7,r7,#1 ;477
|L8.198|
0000c6 2f21 CMP r7,#0x21 ;474
0000c8 d9da BLS |L8.128|
;;;487 /* Enable and apply new PLL setting. */
;;;488 CLK->PLLCTL = u32CLK_SRC | (u32NO << 14) | ((u32MinNR - 2) << 9) | (u32MinNF - 2);
;;;489
;;;490 /* Wait for PLL clock stable */
;;;491 CLK_WaitClockReady(CLK_STATUS_PLLSTB_Msk);
;;;492
;;;493 /* Return actual PLL output clock frequency */
;;;494 return u32PllSrcClk / ((u32NO + 1) * u32MinNR) * u32MinNF;
;;;495 }
;;;496 }
;;;497 }
;;;498 }
;;;499 }
;;;500 }
;;;501
;;;502
;;;503 /* Find best solution */
;;;504 u32Best = u32Min;
;;;505 u32Min = (uint32_t) - 1;
0000ca 2000 MOVS r0,#0
;;;506 u32MinNR = 0;
;;;507 u32MinNF = 0;
;;;508 for(u32NR=u32NRT; u32NR <= 33; u32NR++) {
0000cc 9606 STR r6,[sp,#0x18]
0000ce 43c0 MVNS r0,r0 ;505
0000d0 9001 STR r0,[sp,#4]
0000d2 9e08 LDR r6,[sp,#0x20]
0000d4 e054 B |L8.384|
|L8.214|
0000d6 9909 LDR r1,[sp,#0x24] ;488
0000d8 03a8 LSLS r0,r5,#14 ;488
0000da 4308 ORRS r0,r0,r1 ;488
0000dc 2101 MOVS r1,#1 ;488
0000de 027a LSLS r2,r7,#9 ;488
0000e0 0289 LSLS r1,r1,#10 ;488
0000e2 1a51 SUBS r1,r2,r1 ;488
0000e4 4308 ORRS r0,r0,r1 ;488
0000e6 9904 LDR r1,[sp,#0x10] ;488
0000e8 1e89 SUBS r1,r1,#2 ;488
0000ea 4308 ORRS r0,r0,r1 ;488
0000ec 493c LDR r1,|L8.480|
0000ee 6208 STR r0,[r1,#0x20] ;488
0000f0 2004 MOVS r0,#4 ;491
0000f2 f7fffffe BL CLK_WaitClockReady
0000f6 1c69 ADDS r1,r5,#1 ;494
0000f8 4379 MULS r1,r7,r1 ;494
0000fa 9800 LDR r0,[sp,#0] ;494
0000fc f7fffffe BL __aeabi_uidivmod
000100 9904 LDR r1,[sp,#0x10] ;494
000102 4348 MULS r0,r1,r0 ;494
|L8.260|
;;;509 u32Tmp = u32PllSrcClk / u32NR;
;;;510 if((u32Tmp > 1600000) && (u32Tmp < 15000000)) {
;;;511 for(u32NF = 2; u32NF <= 513; u32NF++) {
;;;512 u32Tmp2 = u32Tmp * u32NF;
;;;513 if((u32Tmp2 >= 100000000) && (u32Tmp2 <= 200000000)) {
;;;514 u32Tmp3 = (u32Tmp2 > u32PllFreq) ? u32Tmp2 - u32PllFreq : u32PllFreq - u32Tmp2;
;;;515 if(u32Tmp3 < u32Min) {
;;;516 u32Min = u32Tmp3;
;;;517 u32MinNR = u32NR;
;;;518 u32MinNF = u32NF;
;;;519
;;;520 /* Break when get good results */
;;;521 if(u32Min == u32Best) {
;;;522 /* Enable and apply new PLL setting. */
;;;523 CLK->PLLCTL = u32CLK_SRC | (u32NO << 14) | ((u32MinNR - 2) << 9) | (u32MinNF - 2);
;;;524
;;;525 /* Wait for PLL clock stable */
;;;526 CLK_WaitClockReady(CLK_STATUS_PLLSTB_Msk);
;;;527
;;;528 /* Return actual PLL output clock frequency */
;;;529 return u32PllSrcClk / ((u32NO + 1) * u32MinNR) * u32MinNF;
;;;530 }
;;;531 }
;;;532 }
;;;533 }
;;;534 }
;;;535 }
;;;536
;;;537
;;;538 lexit:
;;;539
;;;540 /* Apply default PLL setting and return */
;;;541 if(u32PllClkSrc == CLK_PLLCTL_PLLSRC_HXT)
;;;542 CLK->PLLCTL = CLK_PLLCTL_72MHz_HXT; /* 72MHz */
;;;543 else
;;;544 CLK->PLLCTL = CLK_PLLCTL_72MHz_HIRC; /* 71.8848MHz */
;;;545
;;;546 /* Wait for PLL clock stable */
;;;547 CLK_WaitClockReady(CLK_STATUS_PLLSTB_Msk);
;;;548
;;;549 return CLK_GetPLLClockFreq();
;;;550
;;;551 }
000104 b00d ADD sp,sp,#0x34
000106 bdf0 POP {r4-r7,pc}
|L8.264|
000108 4631 MOV r1,r6 ;509
00010a 9800 LDR r0,[sp,#0] ;509
00010c f7fffffe BL __aeabi_uidivmod
000110 493a LDR r1,|L8.508|
000112 1842 ADDS r2,r0,r1 ;510
000114 493a LDR r1,|L8.512|
000116 428a CMP r2,r1 ;510
000118 d231 BCS |L8.382|
00011a 2102 MOVS r1,#2 ;511
|L8.284|
00011c 4b32 LDR r3,|L8.488|
00011e 4602 MOV r2,r0 ;511
000120 434a MULS r2,r1,r2 ;512
000122 1c5b ADDS r3,r3,#1 ;513
000124 18d7 ADDS r7,r2,r3 ;513
000126 425b RSBS r3,r3,#0 ;513
000128 429f CMP r7,r3 ;513
00012a d824 BHI |L8.374|
00012c 42a2 CMP r2,r4 ;514
00012e d901 BLS |L8.308|
000130 1b12 SUBS r2,r2,r4 ;514
000132 e000 B |L8.310|
|L8.308|
000134 1aa2 SUBS r2,r4,r2 ;514
|L8.310|
000136 9b01 LDR r3,[sp,#4] ;515
000138 429a CMP r2,r3 ;515
00013a d21c BCS |L8.374|
00013c 9201 STR r2,[sp,#4] ;521
00013e 9b06 LDR r3,[sp,#0x18] ;521
000140 460f MOV r7,r1 ;518
000142 429a CMP r2,r3 ;521
000144 d117 BNE |L8.374|
000146 9909 LDR r1,[sp,#0x24] ;523
000148 03a8 LSLS r0,r5,#14 ;523
00014a 4308 ORRS r0,r0,r1 ;523
00014c 2101 MOVS r1,#1 ;523
00014e 0272 LSLS r2,r6,#9 ;523
000150 0289 LSLS r1,r1,#10 ;523
000152 1a51 SUBS r1,r2,r1 ;523
000154 4308 ORRS r0,r0,r1 ;523
000156 1eb9 SUBS r1,r7,#2 ;523
000158 4308 ORRS r0,r0,r1 ;523
00015a 4921 LDR r1,|L8.480|
00015c 6208 STR r0,[r1,#0x20] ;523
00015e 2004 MOVS r0,#4 ;526
000160 f7fffffe BL CLK_WaitClockReady
000164 1c69 ADDS r1,r5,#1 ;529
000166 4371 MULS r1,r6,r1 ;529
000168 9800 LDR r0,[sp,#0] ;529
00016a f7fffffe BL __aeabi_uidivmod
00016e e000 B |L8.370|
|L8.368|
000170 e008 B |L8.388|
|L8.370|
000172 4378 MULS r0,r7,r0 ;529
000174 e7c6 B |L8.260|
|L8.374|
000176 4a23 LDR r2,|L8.516|
000178 1c49 ADDS r1,r1,#1 ;511
00017a 4291 CMP r1,r2 ;511
00017c d9ce BLS |L8.284|
|L8.382|
00017e 1c76 ADDS r6,r6,#1 ;511
|L8.384|
000180 2e21 CMP r6,#0x21 ;508
000182 d9c1 BLS |L8.264|
|L8.388|
000184 980b LDR r0,[sp,#0x2c] ;541
000186 2800 CMP r0,#0 ;541
000188 d00f BEQ |L8.426|
00018a 491f LDR r1,|L8.520|
|L8.396|
00018c 4814 LDR r0,|L8.480|
00018e 6201 STR r1,[r0,#0x20] ;544
000190 2004 MOVS r0,#4 ;547
000192 f7fffffe BL CLK_WaitClockReady
000196 a01d ADR r0,|L8.524|
000198 6800 LDR r0,[r0,#0] ;547
00019a 9003 STR r0,[sp,#0xc] ;547
00019c 4810 LDR r0,|L8.480|
00019e 6a01 LDR r1,[r0,#0x20] ;547
0001a0 1300 ASRS r0,r0,#12 ;547
0001a2 4201 TST r1,r0 ;547
0001a4 d003 BEQ |L8.430|
0001a6 2000 MOVS r0,#0 ;547
0001a8 e7ac B |L8.260|
|L8.426|
0001aa 4919 LDR r1,|L8.528|
0001ac e7ee B |L8.396|
|L8.430|
0001ae 0308 LSLS r0,r1,#12 ;542
0001b0 d501 BPL |L8.438|
0001b2 480c LDR r0,|L8.484|
0001b4 e000 B |L8.440|
|L8.438|
0001b6 480e LDR r0,|L8.496|
|L8.440|
0001b8 038a LSLS r2,r1,#14 ;542
0001ba d4a3 BMI |L8.260|
0001bc 040a LSLS r2,r1,#16 ;542
0001be 0f92 LSRS r2,r2,#30 ;542
0001c0 ab03 ADD r3,sp,#0xc ;542
0001c2 5c9b LDRB r3,[r3,r2] ;542
0001c4 05ca LSLS r2,r1,#23 ;542
0001c6 0489 LSLS r1,r1,#18 ;542
0001c8 0dd2 LSRS r2,r2,#23 ;542
0001ca 0ec9 LSRS r1,r1,#27 ;542
0001cc 1c89 ADDS r1,r1,#2 ;542
0001ce 0880 LSRS r0,r0,#2 ;542
0001d0 1c92 ADDS r2,r2,#2 ;542
0001d2 4359 MULS r1,r3,r1 ;542
0001d4 4350 MULS r0,r2,r0 ;542
0001d6 f7fffffe BL __aeabi_uidivmod
0001da 0080 LSLS r0,r0,#2 ;542
0001dc e792 B |L8.260|
;;;552
ENDP
0001de 0000 DCW 0x0000
|L8.480|
DCD 0x50000200
|L8.484|
DCD 0x01518000
|L8.488|
DCD 0xfa0a1eff
|L8.492|
DCD 0x05f5e0ff
|L8.496|
DCD 0x00b71b00
|L8.500|
DCD 0xfd050f80
|L8.504|
DCD 0xfe8287c0
|L8.508|
DCD 0xffe795ff
|L8.512|
DCD 0x00cc77bf
|L8.516|
DCD 0x00000201
|L8.520|
DCD 0x00084418
|L8.524|
00020c 01020204 DCB 1,2,2,4
|L8.528|
DCD 0x00004016
AREA ||i.CLK_EnableSysTick||, CODE, READONLY, ALIGN=2
CLK_EnableSysTick PROC
;;;301 */
;;;302 void CLK_EnableSysTick(uint32_t u32ClkSrc, uint32_t u32Count)
000000 b570 PUSH {r4-r6,lr}
;;;303 {
;;;304 SysTick->CTRL=0;
000002 4a0d LDR r2,|L9.56|
000004 2300 MOVS r3,#0
000006 6113 STR r3,[r2,#0x10]
;;;305 if( u32ClkSrc== CLK_CLKSEL0_STCLKSEL_HCLK ) /* Set System Tick clock source */
;;;306 SysTick->CTRL |= SysTick_CTRL_CLKSOURCE_Msk;
000008 2404 MOVS r4,#4
00000a 2808 CMP r0,#8 ;305
00000c d00f BEQ |L9.46|
;;;307 else {
;;;308 SysTick->CTRL &= ~SysTick_CTRL_CLKSOURCE_Msk;
00000e 6915 LDR r5,[r2,#0x10]
000010 43a5 BICS r5,r5,r4
000012 6115 STR r5,[r2,#0x10]
;;;309 CLK->CLKSEL0 = (CLK->CLKSEL0 & ~CLK_CLKSEL0_STCLKSEL_Msk) | u32ClkSrc;
000014 4d09 LDR r5,|L9.60|
000016 692c LDR r4,[r5,#0x10]
000018 2638 MOVS r6,#0x38
00001a 43b4 BICS r4,r4,r6
00001c 4304 ORRS r4,r4,r0
00001e 612c STR r4,[r5,#0x10]
|L9.32|
;;;310 }
;;;311 SysTick->LOAD = u32Count; /* Set System Tick reload value */
000020 6151 STR r1,[r2,#0x14]
;;;312 SysTick->VAL = 0; /* Clear System Tick current value and counter flag */
000022 6193 STR r3,[r2,#0x18]
;;;313 SysTick->CTRL |= SysTick_CTRL_ENABLE_Msk; /* Set System Tick counter enabled */
000024 6910 LDR r0,[r2,#0x10]
000026 2101 MOVS r1,#1
000028 4308 ORRS r0,r0,r1
00002a 6110 STR r0,[r2,#0x10]
;;;314 }
00002c bd70 POP {r4-r6,pc}
|L9.46|
00002e 6910 LDR r0,[r2,#0x10] ;306
000030 4320 ORRS r0,r0,r4 ;306
000032 6110 STR r0,[r2,#0x10] ;306
000034 e7f4 B |L9.32|
;;;315
ENDP
000036 0000 DCW 0x0000
|L9.56|
DCD 0xe000e000
|L9.60|
DCD 0x50000200
AREA ||i.CLK_EnableXtalRC||, CODE, READONLY, ALIGN=2
CLK_EnableXtalRC PROC
;;;333 */
;;;334 void CLK_EnableXtalRC(uint32_t u32ClkMask)
000000 4904 LDR r1,|L10.20|
;;;335 {
;;;336 if(u32ClkMask & CLK_PWRCTL_XTLEN_Msk)
000002 0782 LSLS r2,r0,#30
;;;337 CLK->PWRCTL = (CLK->PWRCTL & ~CLK_PWRCTL_XTLEN_Msk) | u32ClkMask;
;;;338 else
;;;339 CLK->PWRCTL |= u32ClkMask;
000004 680a LDR r2,[r1,#0]
000006 d001 BEQ |L10.12|
000008 0892 LSRS r2,r2,#2 ;337
00000a 0092 LSLS r2,r2,#2 ;337
|L10.12|
00000c 4302 ORRS r2,r2,r0 ;337
00000e 600a STR r2,[r1,#0] ;337
;;;340 }
000010 4770 BX lr
;;;341
ENDP
000012 0000 DCW 0x0000
|L10.20|
DCD 0x50000200
AREA ||i.CLK_GetCPUFreq||, CODE, READONLY, ALIGN=2
CLK_GetCPUFreq PROC
;;;124 */
;;;125 uint32_t CLK_GetCPUFreq(void)
000000 b510 PUSH {r4,lr}
;;;126 {
;;;127 SystemCoreClockUpdate();
000002 f7fffffe BL SystemCoreClockUpdate
;;;128 return SystemCoreClock;
000006 4801 LDR r0,|L11.12|
000008 6800 LDR r0,[r0,#0] ; SystemCoreClock
;;;129 }
00000a bd10 POP {r4,pc}
;;;130
ENDP
|L11.12|
DCD SystemCoreClock
AREA ||i.CLK_GetHCLKFreq||, CODE, READONLY, ALIGN=2
CLK_GetHCLKFreq PROC
;;;113 */
;;;114 uint32_t CLK_GetHCLKFreq(void)
000000 b510 PUSH {r4,lr}
;;;115 {
;;;116 SystemCoreClockUpdate();
000002 f7fffffe BL SystemCoreClockUpdate
;;;117 return SystemCoreClock;
000006 4801 LDR r0,|L12.12|
000008 6800 LDR r0,[r0,#0] ; SystemCoreClock
;;;118 }
00000a bd10 POP {r4,pc}
;;;119
ENDP
|L12.12|
DCD SystemCoreClock
AREA ||i.CLK_GetHXTFreq||, CODE, READONLY, ALIGN=2
CLK_GetHXTFreq PROC
;;;89 */
;;;90 uint32_t CLK_GetHXTFreq(void)
000000 4804 LDR r0,|L13.20|
;;;91 {
;;;92 if((CLK->PWRCTL & CLK_PWRCTL_XTLEN_Msk)==CLK_PWRCTL_XTLEN_HXT )
000002 6800 LDR r0,[r0,#0]
000004 0780 LSLS r0,r0,#30
000006 0f80 LSRS r0,r0,#30
000008 2801 CMP r0,#1
00000a d001 BEQ |L13.16|
;;;93 return __HXT;
;;;94 else
;;;95 return 0;
00000c 2000 MOVS r0,#0
;;;96 }
00000e 4770 BX lr
|L13.16|
000010 4801 LDR r0,|L13.24|
000012 4770 BX lr
;;;97
ENDP
|L13.20|
DCD 0x50000200
|L13.24|
DCD 0x00b71b00
AREA ||i.CLK_GetLXTFreq||, CODE, READONLY, ALIGN=2
CLK_GetLXTFreq PROC
;;;101 */
;;;102 uint32_t CLK_GetLXTFreq(void)
000000 4804 LDR r0,|L14.20|
;;;103 {
;;;104 if((CLK->PWRCTL & CLK_PWRCTL_XTLEN_Msk )==CLK_PWRCTL_XTLEN_LXT )
000002 6800 LDR r0,[r0,#0]
000004 0780 LSLS r0,r0,#30
000006 0f80 LSRS r0,r0,#30
000008 2802 CMP r0,#2
00000a d001 BEQ |L14.16|
;;;105 return __XTAL;
;;;106 else
;;;107 return 0;
00000c 2000 MOVS r0,#0
;;;108 }
00000e 4770 BX lr
|L14.16|
000010 4801 LDR r0,|L14.24|
000012 4770 BX lr
;;;109
ENDP
|L14.20|
DCD 0x50000200
|L14.24|
DCD 0x00b71b00
AREA ||i.CLK_Idle||, CODE, READONLY, ALIGN=2
CLK_Idle PROC
;;;79 */
;;;80 void CLK_Idle(void)
000000 4803 LDR r0,|L15.16|
;;;81 {
;;;82 CLK->PWRCTL |= (CLK_PWRCTL_PDEN_Msk | CLK_PWRCTL_PDWKIF_Msk);
000002 6801 LDR r1,[r0,#0]
000004 22c0 MOVS r2,#0xc0
000006 4311 ORRS r1,r1,r2
000008 6001 STR r1,[r0,#0]
;;;83 __WFI();
00000a bf30 WFI
;;;84 }
00000c 4770 BX lr
;;;85
ENDP
00000e 0000 DCW 0x0000
|L15.16|
DCD 0x50000200
AREA ||i.CLK_PowerDown||, CODE, READONLY, ALIGN=2
CLK_PowerDown PROC
;;;68 */
;;;69 void CLK_PowerDown(void)
000000 4904 LDR r1,|L16.20|
;;;70 {
;;;71 SCB->SCR = SCB_SCR_SLEEPDEEP_Msk;
000002 2004 MOVS r0,#4
000004 6108 STR r0,[r1,#0x10]
;;;72 CLK->PWRCTL |= (CLK_PWRCTL_PDEN_Msk | CLK_PWRCTL_PDWKIF_Msk);
000006 4804 LDR r0,|L16.24|
000008 6801 LDR r1,[r0,#0]
00000a 22c0 MOVS r2,#0xc0
00000c 4311 ORRS r1,r1,r2
00000e 6001 STR r1,[r0,#0]
;;;73 __WFI();
000010 bf30 WFI
;;;74 }
000012 4770 BX lr
;;;75
ENDP
|L16.20|
DCD 0xe000ed00
|L16.24|
DCD 0x50000200
AREA ||i.CLK_SetCoreClock||, CODE, READONLY, ALIGN=2
CLK_SetCoreClock PROC
;;;139 */
;;;140 uint32_t CLK_SetCoreClock(uint32_t u32Hclk)
000000 b5f8 PUSH {r3-r7,lr}
;;;141 {
;;;142 uint32_t u32HIRCSTB;
;;;143
;;;144 /* Read HIRC clock source stable flag */
;;;145 u32HIRCSTB = CLK->STATUS & CLK_STATUS_HIRCSTB_Msk;
000002 4c1e LDR r4,|L17.124|
000004 4605 MOV r5,r0 ;141
000006 68e6 LDR r6,[r4,#0xc]
000008 2010 MOVS r0,#0x10
;;;146
;;;147 /* The range of u32Hclk is 25 MHz ~ 50 MHz */
;;;148 if(u32Hclk > FREQ_50MHZ)
00000a 491d LDR r1,|L17.128|
00000c 4006 ANDS r6,r6,r0 ;145
;;;149 u32Hclk = FREQ_50MHZ;
;;;150 if(u32Hclk < FREQ_25MHZ)
00000e 1048 ASRS r0,r1,#1
000010 428d CMP r5,r1 ;148
000012 d901 BLS |L17.24|
000014 460d MOV r5,r1 ;149
000016 e002 B |L17.30|
|L17.24|
000018 4285 CMP r5,r0
00001a d200 BCS |L17.30|
;;;151 u32Hclk = FREQ_25MHZ;
00001c 4605 MOV r5,r0
|L17.30|
;;;152
;;;153 /* Switch HCLK clock source to HIRC clock for safe */
;;;154 CLK->PWRCTL |= CLK_PWRCTL_HIRCEN_Msk;
00001e 6820 LDR r0,[r4,#0]
000020 2704 MOVS r7,#4
000022 4338 ORRS r0,r0,r7
000024 6020 STR r0,[r4,#0]
;;;155 CLK_WaitClockReady(CLK_STATUS_HIRCSTB_Msk);
000026 2010 MOVS r0,#0x10
000028 f7fffffe BL CLK_WaitClockReady
;;;156 CLK->CLKSEL0 |= CLK_CLKSEL0_HCLKSEL_Msk;
00002c 6920 LDR r0,[r4,#0x10]
00002e 2107 MOVS r1,#7
000030 4308 ORRS r0,r0,r1
000032 6120 STR r0,[r4,#0x10]
;;;157 CLK->CLKDIV &= (~CLK_CLKDIV_HCLKDIV_Msk);
000034 69a0 LDR r0,[r4,#0x18]
000036 0900 LSRS r0,r0,#4
000038 0100 LSLS r0,r0,#4
00003a 61a0 STR r0,[r4,#0x18]
;;;158
;;;159 /* Configure PLL setting if HXT clock is enabled */
;;;160 if( (CLK->PWRCTL & CLK_PWRCTL_XTLEN_Msk)==CLK_PWRCTL_XTLEN_HXT )
00003c 6820 LDR r0,[r4,#0]
00003e 0780 LSLS r0,r0,#30
000040 0f80 LSRS r0,r0,#30
000042 2801 CMP r0,#1
000044 d00e BEQ |L17.100|
;;;161 u32Hclk = CLK_EnablePLL(CLK_PLLCTL_PLLSRC_HXT, (u32Hclk << 1));
;;;162
;;;163 /* Configure PLL setting if HXT clock is not enabled */
;;;164 else {
;;;165 u32Hclk = CLK_EnablePLL(CLK_PLLCTL_PLLSRC_HIRC, (u32Hclk << 1));
000046 0069 LSLS r1,r5,#1
000048 0478 LSLS r0,r7,#17
00004a f7fffffe BL CLK_EnablePLL
;;;166
;;;167 /* Read HIRC clock source stable flag */
;;;168 u32HIRCSTB = CLK->STATUS & CLK_STATUS_HIRCSTB_Msk;
00004e 68e6 LDR r6,[r4,#0xc]
000050 4605 MOV r5,r0 ;165
000052 2010 MOVS r0,#0x10
000054 4006 ANDS r6,r6,r0
|L17.86|
;;;169 }
;;;170
;;;171 /* Select HCLK clock source to PLL,
;;;172 Select HCLK clock source divider as 2
;;;173 and update system core clock
;;;174 */
;;;175 CLK_SetHCLK(CLK_CLKSEL0_HCLKSEL_PLL, CLK_CLKDIV_HCLK(2));
000056 2101 MOVS r1,#1
000058 2002 MOVS r0,#2
00005a f7fffffe BL CLK_SetHCLK
;;;176
;;;177 /* Disable HIRC if HIRC is disabled before setting core clock */
;;;178 if(u32HIRCSTB == 0)
00005e 2e00 CMP r6,#0
000060 d006 BEQ |L17.112|
000062 e008 B |L17.118|
|L17.100|
000064 0069 LSLS r1,r5,#1 ;161
000066 2000 MOVS r0,#0 ;161
000068 f7fffffe BL CLK_EnablePLL
00006c 4605 MOV r5,r0 ;161
00006e e7f2 B |L17.86|
|L17.112|
;;;179 CLK->PWRCTL &= ~CLK_PWRCTL_HIRCEN_Msk;
000070 6820 LDR r0,[r4,#0]
000072 43b8 BICS r0,r0,r7
000074 6020 STR r0,[r4,#0]
|L17.118|
;;;180
;;;181 /* Return actually HCLK frequency is PLL frequency divide 2 */
;;;182 return u32Hclk >> 1;
000076 0868 LSRS r0,r5,#1
;;;183 }
000078 bdf8 POP {r3-r7,pc}
;;;184
ENDP
00007a 0000 DCW 0x0000
|L17.124|
DCD 0x50000200
|L17.128|
DCD 0x02faf080
AREA ||i.CLK_SetHCLK||, CODE, READONLY, ALIGN=2
CLK_SetHCLK PROC
;;;194 */
;;;195 void CLK_SetHCLK(uint32_t u32ClkSrc, uint32_t u32ClkDiv)
000000 b510 PUSH {r4,lr}
;;;196 {
;;;197 /* Apply new Divider */
;;;198 CLK->CLKDIV = (CLK->CLKDIV & ~CLK_CLKDIV_HCLKDIV_Msk) | u32ClkDiv;
000002 4a07 LDR r2,|L18.32|
000004 6993 LDR r3,[r2,#0x18]
000006 091b LSRS r3,r3,#4
000008 011b LSLS r3,r3,#4
00000a 430b ORRS r3,r3,r1
00000c 6193 STR r3,[r2,#0x18]
;;;199
;;;200 /* Switch HCLK to new HCLK source */
;;;201 CLK->CLKSEL0 = (CLK->CLKSEL0 & ~CLK_CLKSEL0_HCLKSEL_Msk) | u32ClkSrc;
00000e 6911 LDR r1,[r2,#0x10]
000010 08c9 LSRS r1,r1,#3
000012 00c9 LSLS r1,r1,#3
000014 4301 ORRS r1,r1,r0
000016 6111 STR r1,[r2,#0x10]
;;;202
;;;203 /* Update System Core Clock */
;;;204 SystemCoreClockUpdate();
000018 f7fffffe BL SystemCoreClockUpdate
;;;205 }
00001c bd10 POP {r4,pc}
;;;206
ENDP
00001e 0000 DCW 0x0000
|L18.32|
DCD 0x50000200
AREA ||i.CLK_SetModuleClock||, CODE, READONLY, ALIGN=2
CLK_SetModuleClock PROC
;;;255
;;;256 void CLK_SetModuleClock(uint32_t u32ModuleIdx, uint32_t u32ClkSrc, uint32_t u32ClkDiv)
000000 b570 PUSH {r4-r6,lr}
;;;257 {
;;;258 uint32_t u32tmp=0,u32sel=0,u32div=0;
;;;259
;;;260 if(MODULE_CLKSEL_Msk(u32ModuleIdx)!=MODULE_NoMsk) {
000002 0e43 LSRS r3,r0,#25
000004 071b LSLS r3,r3,#28
000006 d00d BEQ |L19.36|
;;;261 u32sel = (uint32_t)&CLK->CLKSEL0+((MODULE_CLKSEL(u32ModuleIdx))*4);
000008 0043 LSLS r3,r0,#1
00000a 0f9b LSRS r3,r3,#30
00000c 4c0f LDR r4,|L19.76|
00000e 009b LSLS r3,r3,#2
000010 191c ADDS r4,r3,r4
;;;262 u32tmp = *(volatile uint32_t *)(u32sel);
000012 6823 LDR r3,[r4,#0]
000014 00c5 LSLS r5,r0,#3
;;;263 u32tmp = ( u32tmp & ~(MODULE_CLKSEL_Msk(u32ModuleIdx)<<MODULE_CLKSEL_Pos(u32ModuleIdx)) ) | u32ClkSrc;
000016 0f2d LSRS r5,r5,#28
000018 01c6 LSLS r6,r0,#7
00001a 0ef6 LSRS r6,r6,#27
00001c 40b5 LSLS r5,r5,r6
00001e 43ab BICS r3,r3,r5
000020 430b ORRS r3,r3,r1
;;;264 *(volatile uint32_t *)(u32sel) = u32tmp;
000022 6023 STR r3,[r4,#0]
|L19.36|
;;;265 }
;;;266
;;;267 if(MODULE_CLKDIV_Msk(u32ModuleIdx)!=MODULE_NoMsk) {
000024 0a84 LSRS r4,r0,#10
000026 0621 LSLS r1,r4,#24
000028 0e09 LSRS r1,r1,#24
00002a d00d BEQ |L19.72|
;;;268 u32div =(uint32_t)&CLK->CLKDIV+((MODULE_CLKDIV(u32ModuleIdx))*4);
00002c 0301 LSLS r1,r0,#12
00002e 4b07 LDR r3,|L19.76|
000030 0f89 LSRS r1,r1,#30
000032 0089 LSLS r1,r1,#2
000034 3308 ADDS r3,r3,#8
000036 18cb ADDS r3,r1,r3
;;;269 u32tmp = *(volatile uint32_t *)(u32div);
000038 6819 LDR r1,[r3,#0]
;;;270 u32tmp = ( u32tmp & ~(MODULE_CLKDIV_Msk(u32ModuleIdx)<<MODULE_CLKDIV_Pos(u32ModuleIdx)) ) | u32ClkDiv;
00003a 0580 LSLS r0,r0,#22
00003c b2e4 UXTB r4,r4
00003e 0ec0 LSRS r0,r0,#27
000040 4084 LSLS r4,r4,r0
000042 43a1 BICS r1,r1,r4
000044 4311 ORRS r1,r1,r2
;;;271 *(volatile uint32_t *)(u32div) = u32tmp;
000046 6019 STR r1,[r3,#0]
|L19.72|
;;;272 }
;;;273 }
000048 bd70 POP {r4-r6,pc}
;;;274
ENDP
00004a 0000 DCW 0x0000
|L19.76|
DCD 0x50000210
AREA ||i.CLK_SetSysTickClockSrc||, CODE, READONLY, ALIGN=2
CLK_SetSysTickClockSrc PROC
;;;283 */
;;;284 void CLK_SetSysTickClockSrc(uint32_t u32ClkSrc)
000000 4903 LDR r1,|L20.16|
;;;285 {
;;;286 CLK->CLKSEL0 = (CLK->CLKSEL0 & ~CLK_CLKSEL0_STCLKSEL_Msk) | u32ClkSrc;
000002 690a LDR r2,[r1,#0x10]
000004 2338 MOVS r3,#0x38
000006 439a BICS r2,r2,r3
000008 4302 ORRS r2,r2,r0
00000a 610a STR r2,[r1,#0x10]
;;;287 }
00000c 4770 BX lr
;;;288
ENDP
00000e 0000 DCW 0x0000
|L20.16|
DCD 0x50000200
AREA ||i.CLK_SysTickDelay||, CODE, READONLY, ALIGN=2
CLK_SysTickDelay PROC
;;;572 */
;;;573 void CLK_SysTickDelay(uint32_t us)
000000 4906 LDR r1,|L21.28|
;;;574 {
;;;575 SysTick->LOAD = us * CyclesPerUs;
000002 6809 LDR r1,[r1,#0] ; CyclesPerUs
000004 4348 MULS r0,r1,r0
000006 4906 LDR r1,|L21.32|
000008 6148 STR r0,[r1,#0x14]
;;;576 SysTick->VAL = (0x00);
00000a 2000 MOVS r0,#0
00000c 6188 STR r0,[r1,#0x18]
;;;577 SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | SysTick_CTRL_ENABLE_Msk;
00000e 2205 MOVS r2,#5
000010 610a STR r2,[r1,#0x10]
|L21.18|
;;;578
;;;579 /* Waiting for down-count to zero */
;;;580 while((SysTick->CTRL & SysTick_CTRL_COUNTFLAG_Msk) == 0);
000012 690a LDR r2,[r1,#0x10]
000014 03d2 LSLS r2,r2,#15
000016 d5fc BPL |L21.18|
;;;581 SysTick->CTRL = 0;
000018 6108 STR r0,[r1,#0x10]
;;;582 }
00001a 4770 BX lr
;;;583
ENDP
|L21.28|
DCD CyclesPerUs
|L21.32|
DCD 0xe000e000
AREA ||i.CLK_WaitClockReady||, CODE, READONLY, ALIGN=2
CLK_WaitClockReady PROC
;;;596 */
;;;597 uint32_t CLK_WaitClockReady(uint32_t u32ClkMask)
000000 b510 PUSH {r4,lr}
;;;598 {
;;;599 int32_t i32TimeOutCnt = 2160000;
000002 4907 LDR r1,|L22.32|
;;;600
;;;601 while((CLK->STATUS & u32ClkMask) != u32ClkMask) {
000004 4a07 LDR r2,|L22.36|
000006 e005 B |L22.20|
|L22.8|
;;;602 if(i32TimeOutCnt-- <= 0)
000008 460b MOV r3,r1
00000a 1e49 SUBS r1,r1,#1
00000c 2b00 CMP r3,#0
00000e dc01 BGT |L22.20|
;;;603 return 0;
000010 2000 MOVS r0,#0
;;;604 }
;;;605 return 1;
;;;606 }
000012 bd10 POP {r4,pc}
|L22.20|
000014 68d4 LDR r4,[r2,#0xc] ;601
000016 4603 MOV r3,r0 ;601
000018 43a3 BICS r3,r3,r4 ;601
00001a d1f5 BNE |L22.8|
00001c 2001 MOVS r0,#1 ;605
00001e bd10 POP {r4,pc}
;;;607
ENDP
|L22.32|
DCD 0x0020f580
|L22.36|
DCD 0x50000200
;*** Start embedded assembler ***
#line 1 "..\\..\\..\\Library\\StdDriver\\src\\clk.c"
AREA ||.rev16_text||, CODE
THUMB
EXPORT |__asm___5_clk_c_9b5832dc____REV16|
#line 388 "..\\..\\..\\Library\\CMSIS\\Include\\cmsis_armcc.h"
|__asm___5_clk_c_9b5832dc____REV16| PROC
#line 389
rev16 r0, r0
bx lr
ENDP
AREA ||.revsh_text||, CODE
THUMB
EXPORT |__asm___5_clk_c_9b5832dc____REVSH|
#line 402
|__asm___5_clk_c_9b5832dc____REVSH| PROC
#line 403
revsh r0, r0
bx lr
ENDP
;*** End embedded assembler ***