blinkled.elf: file format elf32-kungfu32-little Disassembly of section .text: 00000000 <_start>: __vector_entry__: 0: 00 00 01 10 c4 03 00 00 94 0c 00 00 98 0c 00 00 ................ 10: 64 0e 00 00 9c 0c 00 00 a0 0c 00 00 70 bb fe ef d...........p... 20: 64 0e 00 00 64 0e 00 00 64 0e 00 00 a4 0c 00 00 d...d...d....... 30: 64 0e 00 00 64 0e 00 00 a8 0c 00 00 ac 0c 00 00 d...d........... 40: 64 0e 00 00 64 0e 00 00 64 0e 00 00 64 0e 00 00 d...d...d...d... 50: 64 0e 00 00 64 0e 00 00 64 0e 00 00 64 0e 00 00 d...d...d...d... 60: 64 0e 00 00 64 0e 00 00 64 0e 00 00 64 0e 00 00 d...d...d...d... 70: 64 0e 00 00 64 0e 00 00 64 0e 00 00 64 0e 00 00 d...d...d...d... 80: 64 0e 00 00 64 0e 00 00 64 0e 00 00 64 0e 00 00 d...d...d...d... 90: 64 0e 00 00 64 0e 00 00 64 0e 00 00 64 0e 00 00 d...d...d...d... a0: 64 0e 00 00 64 0e 00 00 64 0e 00 00 64 0e 00 00 d...d...d...d... b0: 64 0e 00 00 64 0e 00 00 64 0e 00 00 64 0e 00 00 d...d...d...d... c0: 64 0e 00 00 64 0e 00 00 64 0e 00 00 64 0e 00 00 d...d...d...d... d0: 64 0e 00 00 64 0e 00 00 64 0e 00 00 c0 0c 00 00 d...d...d....... e0: 64 0e 00 00 64 0e 00 00 64 0e 00 00 64 0e 00 00 d...d...d...d... f0: 64 0e 00 00 64 0e 00 00 64 0e 00 00 64 0e 00 00 d...d...d...d... 100: 64 0e 00 00 64 0e 00 00 64 0e 00 00 64 0e 00 00 d...d...d...d... 110: 64 0e 00 00 64 0e 00 00 64 0e 00 00 64 0e 00 00 d...d...d...d... 120: 64 0e 00 00 64 0e 00 00 64 0e 00 00 64 0e 00 00 d...d...d...d... 130: 64 0e 00 00 64 0e 00 00 64 0e 00 00 64 0e 00 00 d...d...d...d... 140: 64 0e 00 00 64 0e 00 00 64 0e 00 00 64 0e 00 00 d...d...d...d... 150: 64 0e 00 00 64 0e 00 00 64 0e 00 00 64 0e 00 00 d...d...d...d... 160: 64 0e 00 00 64 0e 00 00 64 0e 00 00 64 0e 00 00 d...d...d...d... 170: 64 0e 00 00 64 0e 00 00 64 0e 00 00 64 0e 00 00 d...d...d...d... 180: 64 0e 00 00 64 0e 00 00 64 0e 00 00 64 0e 00 00 d...d...d...d... 190: 64 0e 00 00 64 0e 00 00 64 0e 00 00 64 0e 00 00 d...d...d...d... 1a0: 64 0e 00 00 64 0e 00 00 64 0e 00 00 64 0e 00 00 d...d...d...d... 1b0: 64 0e 00 00 64 0e 00 00 64 0e 00 00 64 0e 00 00 d...d...d...d... 1c0: 64 0e 00 00 64 0e 00 00 64 0e 00 00 64 0e 00 00 d...d...d...d... 1d0: 64 0e 00 00 64 0e 00 00 64 0e 00 00 64 0e 00 00 d...d...d...d... 1e0: 64 0e 00 00 64 0e 00 00 64 0e 00 00 64 0e 00 00 d...d...d...d... 1f0: 64 0e 00 00 64 0e 00 00 64 0e 00 00 64 0e 00 00 d...d...d...d... 00000200 : TaskBlinLed(): ..\task\task.c:57 static uint32_t TMP1msCount = 0; //1ms到标志,控制多任务处理的时间隔为1ms static void TaskBlinLed(void) { 200: 2d 5d PUSH LR ..\task\task.c:59 static int i = 0; i=(++i)%10; 202: 12 45 LD R5, [PC + #18] ;->0x248 :=0x10000024 204: 55 82 LD.W R5, [R5] 206: 65 c0 ADD R4, R5, #1 208: 10 45 LD R5, [PC + #16] ;->0x248 :=0x10000024 20a: 54 85 ST.W [R5], R4 20c: 0f 45 LD R5, [PC + #15] ;->0x248 :=0x10000024 20e: 55 82 LD.W R5, [R5] 210: 4a 10 MOV R4, #10 212: 1d cf DIVS R3, R5, R4 214: 00 00 NOP NOP 216: 4a 10 MOV R4, #10 218: 23 cb MULS R4, R3, R4 21a: 00 00 NOP NOP 21c: 25 c7 SUB R4, R5, R4 21e: 0b 45 LD R5, [PC + #11] ;->0x248 :=0x10000024 220: 54 85 ST.W [R5], R4 ..\task\task.c:60 if(i==0) 222: 0a 45 LD R5, [PC + #10] ;->0x248 :=0x10000024 224: 55 82 LD.W R5, [R5] 226: 50 38 CMP R5, #0 228: 08 f1 JNZ $+8 ;->0x238 ..\task\task.c:62 { GPIO_Set_Output_Data_Bits(PD12_LED1_PIN, Bit_SET); 22a: 09 40 LD R0, [PC + #9] ;->0x24c :=0x500000c0 22c: 11 10 MOV R1, #1 22e: 8c 7a LSL R1, #12 230: 21 10 MOV R2, #1 232: 08 45 LD R5, [PC + #8] ;->0x250 :=0x48e 234: 05 5c LJMP R5 236: 07 04 SJMP $+7 ;->0x244 ..\task\task.c:66 } else { GPIO_Set_Output_Data_Bits(PD12_LED1_PIN, Bit_RESET); 238: 05 40 LD R0, [PC + #5] ;->0x24c :=0x500000c0 23a: 11 10 MOV R1, #1 23c: 8c 7a LSL R1, #12 23e: 20 10 MOV R2, #0 240: 04 45 LD R5, [PC + #4] ;->0x250 :=0x48e 242: 05 5c LJMP R5 ..\task\task.c:68 } } 244: 0d 5d POP LR 246: 1d 5c JMP LR 248: 24 00 00 10 .long 0x10000024 ->268435492 [!!!@4@:FLD.W S0, [R0+#4] 24c: c0 00 00 50 .long 0x500000c0 ->1342177472 [!!!@4@:DO R0, $+20480 ;->0xa24c 250: 8e 04 00 00 .long 0x0000048e ->000001166 [!!!@2@:SJMP $+142 ;->0x36c @@: NOP 00000254 : idle(): ..\task\task.c:73 static void idle(void) { } 254: 1d 5c JMP LR ... 00000258 : TaskProc(): ..\task\task.c:77 void TaskProc(void) { 258: 2d 5d PUSH LR 25a: e4 30 SUB SP, #4 ..\task\task.c:78 uint32_t i = 0; 25c: 50 10 MOV R5, #0 25e: e5 85 ST.W [SP], R5 ..\task\task.c:81 while(1) { if(!TMP1msCount) //保证1ms扫描一次 260: 2c 45 LD R5, [PC + #44] ;->0x310 :=0x10000020 262: 55 82 LD.W R5, [R5] 264: 50 38 CMP R5, #0 266: 04 f1 JNZ $+4 ;->0x26e ..\task\task.c:83 { idle(); 268: 2b 45 LD R5, [PC + #43] ;->0x314 :=0x254 26a: 05 5c LJMP R5 ..\task\task.c:102 TaskDb[i].TaskProc(); //执行任务 } } TMP1msCount = 0; } } 26c: fa 07 SJMP $-6 ;->0x260 ..\task\task.c:87 { idle(); } else { for(i=0;i0x300 ..\task\task.c:89 { if(!TaskDb[i].cActive) 274: 29 44 LD R4, [PC + #41] ;->0x318 :=0x10000000 276: 5e 82 LD.W R5, [SP] 278: 2c 7a LSL R5, #4 27a: 6c c3 ADD R5, R4, R5 27c: 55 80 LD.B R5, [R5] 27e: 50 38 CMP R5, #0 280: 3c f0 JZ $+60 ;->0x2f8 ..\task\task.c:92 continue; TaskDb[i].lLastTime-=TMP1msCount; 282: 26 44 LD R4, [PC + #38] ;->0x318 :=0x10000000 284: 5e 82 LD.W R5, [SP] 286: 2c 7a LSL R5, #4 288: 6c c3 ADD R5, R4, R5 28a: 2d c1 ADD R5, R5, #4 28c: 55 82 LD.W R5, [R5] 28e: 85 58 MOV R4, R5 290: 20 45 LD R5, [PC + #32] ;->0x310 :=0x10000020 292: 55 82 LD.W R5, [R5] 294: 6c c7 SUB R5, R4, R5 296: 21 43 LD R3, [PC + #33] ;->0x318 :=0x10000000 298: 4e 82 LD.W R4, [SP] 29a: 24 7a LSL R4, #4 29c: 23 c3 ADD R4, R3, R4 29e: 24 c1 ADD R4, R4, #4 2a0: 45 85 ST.W [R4], R5 ..\task\task.c:93 if(TaskDb[i].lLastTime<=0) 2a2: 1e 44 LD R4, [PC + #30] ;->0x318 :=0x10000000 2a4: 5e 82 LD.W R5, [SP] 2a6: 2c 7a LSL R5, #4 2a8: 6c c3 ADD R5, R4, R5 2aa: 2d c1 ADD R5, R5, #4 2ac: 55 82 LD.W R5, [R5] 2ae: 50 38 CMP R5, #0 2b0: 25 fc JGT $+37 ;->0x2fa ..\task\task.c:95 { TaskDb[i].lLastTime += TaskDb[i].lPeriod; 2b2: 1a 44 LD R4, [PC + #26] ;->0x318 :=0x10000000 2b4: 5e 82 LD.W R5, [SP] 2b6: 2c 7a LSL R5, #4 2b8: 6c c3 ADD R5, R4, R5 2ba: 2d c1 ADD R5, R5, #4 2bc: 45 82 LD.W R4, [R5] 2be: 17 43 LD R3, [PC + #23] ;->0x318 :=0x10000000 2c0: 5e 82 LD.W R5, [SP] 2c2: 2c 7a LSL R5, #4 2c4: 6b c3 ADD R5, R3, R5 2c6: 58 28 ADD R5, #8 2c8: 55 82 LD.W R5, [R5] 2ca: 64 c3 ADD R4, R4, R5 2cc: 13 43 LD R3, [PC + #19] ;->0x318 :=0x10000000 2ce: 5e 82 LD.W R5, [SP] 2d0: 2c 7a LSL R5, #4 2d2: 6b c3 ADD R5, R3, R5 2d4: 2d c1 ADD R5, R5, #4 2d6: 54 85 ST.W [R5], R4 ..\task\task.c:96 if(TaskDb[i].TaskProc!=NULL) 2d8: 10 44 LD R4, [PC + #16] ;->0x318 :=0x10000000 2da: 5e 82 LD.W R5, [SP] 2dc: 2c 7a LSL R5, #4 2de: 6c c3 ADD R5, R4, R5 2e0: 5c 28 ADD R5, #12 2e2: 55 82 LD.W R5, [R5] 2e4: 50 38 CMP R5, #0 2e6: 0a f0 JZ $+10 ;->0x2fa ..\task\task.c:97 TaskDb[i].TaskProc(); //执行任务 2e8: 0c 44 LD R4, [PC + #12] ;->0x318 :=0x10000000 2ea: 5e 82 LD.W R5, [SP] 2ec: 2c 7a LSL R5, #4 2ee: 6c c3 ADD R5, R4, R5 2f0: 5c 28 ADD R5, #12 2f2: 55 82 LD.W R5, [R5] 2f4: 05 5c LJMP R5 2f6: 02 04 SJMP $+2 ;->0x2fa ..\task\task.c:90 else { for(i=0;i0x274 ..\task\task.c:100 TaskDb[i].lLastTime += TaskDb[i].lPeriod; if(TaskDb[i].TaskProc!=NULL) TaskDb[i].TaskProc(); //执行任务 } } TMP1msCount = 0; 306: 03 44 LD R4, [PC + #3] ;->0x310 :=0x10000020 308: 50 10 MOV R5, #0 30a: 45 85 ST.W [R4], R5 ..\task\task.c:102 } } 30c: aa 07 SJMP $-86 ;->0x260 30e: 00 00 NOP NOP 310: 20 00 00 10 .long 0x10000020 ->268435488 [!!!@4@:FST.W [R0+#4], S0 314: 54 02 00 00 .long 0x00000254 ->000000596 [!!!@2@:SVC SVC, #84 @@: NOP 318: 00 00 00 10 .long 0x10000000 ->268435456 [!!!@2@:NOP @@: MOV R0, #0 0000031c : TaskTimer(): ..\task\task.c:106 } static void TaskTimer(void) { 31c: 2d 5d PUSH LR 31e: e8 30 SUB SP, #8 ..\task\task.c:110 TIMER_DATA *pt; unsigned char i; pt=&TimerData[0]; // pointer to the first timer 320: 24 45 LD R5, [PC + #36] ;->0x3b0 :=0x10000028 322: e5 85 ST.W [SP], R5 ..\task\task.c:111 for(i=0;i0x3a2 ..\task\task.c:113 { if(!pt->cUse) 32a: 5e 82 LD.W R5, [SP] 32c: 55 80 LD.B R5, [R5] 32e: 50 38 CMP R5, #0 330: 32 f0 JZ $+50 ;->0x394 ..\task\task.c:115 continue; if((--(pt->lLastTime))<=0) 332: 5e 82 LD.W R5, [SP] 334: 2d 99 LD.W R5, [R5 + #4] 336: 65 cc SUB R4, R5, #1 338: 5e 82 LD.W R5, [SP] 33a: 2c a1 ST.W [R5 + #4], R4 33c: 5e 82 LD.W R5, [SP] 33e: 2d 99 LD.W R5, [R5 + #4] 340: 50 38 CMP R5, #0 342: 2a fc JGT $+42 ;->0x396 ..\task\task.c:117 { switch(pt->cMode) 344: 5e 82 LD.W R5, [SP] 346: 2d 8a LD.B R5, [R5 + #8] 348: 51 38 CMP R5, #1 34a: 17 f0 JZ $+23 ;->0x378 34c: 52 38 CMP R5, #2 34e: 07 f0 JZ $+7 ;->0x35c 350: 50 38 CMP R5, #0 352: 1d f1 JNZ $+29 ;->0x38c ..\task\task.c:120 { case TIMER_MODE_TIMER: // timer only pt->cUse=0; 354: 5e 82 LD.W R5, [SP] 356: 40 10 MOV R4, #0 358: 54 83 ST.B [R5], R4 ..\task\task.c:121 break; 35a: 1e 04 SJMP $+30 ;->0x396 ..\task\task.c:123 case TIMER_MODE_CYCROUTINE: // cyclely routine pt->lLastTime+=pt->lPeriod; 35c: 5e 82 LD.W R5, [SP] 35e: 25 99 LD.W R4, [R5 + #4] 360: 5e 82 LD.W R5, [SP] 362: ed 98 LD.W R5, [R5 + #3] 364: 64 c3 ADD R4, R4, R5 366: 5e 82 LD.W R5, [SP] 368: 2c a1 ST.W [R5 + #4], R4 ..\task\task.c:124 pt->routine(pt->Param1); // start user's routine 36a: 5e 82 LD.W R5, [SP] 36c: 65 99 LD.W R4, [R5 + #5] 36e: 5e 82 LD.W R5, [SP] 370: ad 99 LD.W R5, [R5 + #6] 372: 05 58 MOV R0, R5 374: 04 5c LJMP R4 ..\task\task.c:125 break; 376: 10 04 SJMP $+16 ;->0x396 ..\task\task.c:127 case TIMER_MODE_ONCEROUTINE: // timer routine once pt->cUse=0; //防止在routine里stoptimer后启动timer造成错误停止 378: 5e 82 LD.W R5, [SP] 37a: 40 10 MOV R4, #0 37c: 54 83 ST.B [R5], R4 ..\task\task.c:128 pt->routine(pt->Param1); // start user routine 37e: 5e 82 LD.W R5, [SP] 380: 65 99 LD.W R4, [R5 + #5] 382: 5e 82 LD.W R5, [SP] 384: ad 99 LD.W R5, [R5 + #6] 386: 05 58 MOV R0, R5 388: 04 5c LJMP R4 ..\task\task.c:129 break; 38a: 06 04 SJMP $+6 ;->0x396 ..\task\task.c:131 default: pt->cUse=0; 38c: 5e 82 LD.W R5, [SP] 38e: 40 10 MOV R4, #0 390: 54 83 ST.B [R5], R4 ..\task\task.c:132 break; 392: 02 04 SJMP $+2 ;->0x396 ..\task\task.c:114 pt=&TimerData[0]; // pointer to the first timer for(i=0;icUse) continue; 394: 00 00 NOP NOP ..\task\task.c:111 { TIMER_DATA *pt; unsigned char i; pt=&TimerData[0]; // pointer to the first timer for(i=0;i0x32a ..\task\task.c:136 pt->cUse=0; break; } } } } 3a8: e8 28 ADD SP, #8 3aa: 0d 5d POP LR 3ac: 1d 5c JMP LR 3ae: 00 00 NOP NOP 3b0: 28 00 00 10 .long 0x10000028 ->268435496 [!!!@4@:FMLA.F32 S0, S0, S4 000003b4 : Task_SysTick_Handler(): ..\task\task.c:141 void Task_SysTick_Handler(void) { TMP1msCount++; 3b4: 03 45 LD R5, [PC + #3] ;->0x3c0 :=0x10000020 3b6: 55 82 LD.W R5, [R5] 3b8: 65 c0 ADD R4, R5, #1 3ba: 02 45 LD R5, [PC + #2] ;->0x3c0 :=0x10000020 3bc: 54 85 ST.W [R5], R4 ..\task\task.c:142 } 3be: 1d 5c JMP LR 3c0: 20 00 00 10 .long 0x10000020 ->268435488 [!!!@4@:FST.W [R0+#4], S0 000003c4 : startup(): ..\_config\startup.c:22 //####################################################################// int main(void); int startup(void); //####################################################################// int startup(void) { 3c4: 2d 5d PUSH LR 3c6: ec 30 SUB SP, #12 ..\_config\startup.c:31 #ifdef Project_Type__cplusplus void (*pf)(void); #endif //############# init work for the chip #############// // HWREG(0x40000000)=1; HWREG(0x40000000)=0; // cppcheck-suppress misra-c2012-11.4 3c8: 51 10 MOV R5, #1 3ca: ae 7b LSL R5, #30 3cc: 40 10 MOV R4, #0 3ce: 54 85 ST.W [R5], R4 ..\_config\startup.c:33 //############# init variable who have initialization #############// s = (unsigned int*)&__text_end__; 3d0: 14 45 LD R5, [PC + #20] ;->0x420 :=0xe68 3d2: e5 85 ST.W [SP], R5 ..\_config\startup.c:34 begin = (unsigned int*)&__data_start__; 3d4: 14 45 LD R5, [PC + #20] ;->0x424 :=0x10000000 3d6: 01 25 ST.W [SP + #1], R5 ..\_config\startup.c:35 end = (unsigned int*)&__data_end__; 3d8: 14 45 LD R5, [PC + #20] ;->0x428 :=0x10000028 3da: 02 25 ST.W [SP + #2], R5 ..\_config\startup.c:36 while( begin < end) { // cppcheck-suppress comparePointers 3dc: 0b 04 SJMP $+11 ;->0x3f2 ..\_config\startup.c:37 *begin = *s; 3de: 5e 82 LD.W R5, [SP] 3e0: 55 82 LD.W R5, [R5] 3e2: 01 0c LD.W R4, [SP + #1] 3e4: 45 85 ST.W [R4], R5 ..\_config\startup.c:38 begin++;s++; 3e6: 01 0d LD.W R5, [SP + #1] 3e8: 2d c1 ADD R5, R5, #4 3ea: 01 25 ST.W [SP + #1], R5 3ec: 5e 82 LD.W R5, [SP] 3ee: 2d c1 ADD R5, R5, #4 3f0: e5 85 ST.W [SP], R5 ..\_config\startup.c:36 HWREG(0x40000000)=0; // cppcheck-suppress misra-c2012-11.4 //############# init variable who have initialization #############// s = (unsigned int*)&__text_end__; begin = (unsigned int*)&__data_start__; end = (unsigned int*)&__data_end__; while( begin < end) { // cppcheck-suppress comparePointers 3f2: 01 0d LD.W R5, [SP + #1] 3f4: 02 0c LD.W R4, [SP + #2] 3f6: 45 70 CMP R4, R5 3f8: f3 f8 JHI $-13 ;->0x3de ..\_config\startup.c:52 pf();begin++; } #endif //############# init variable who have no initialization #############// #if 1 // 0 not init this type variable begin = (unsigned int*)&__bss_start__; 3fa: 0d 45 LD R5, [PC + #13] ;->0x42c :=0x10000028 3fc: 01 25 ST.W [SP + #1], R5 ..\_config\startup.c:53 end = (unsigned int*)&__bss_end__; 3fe: 0d 45 LD R5, [PC + #13] ;->0x430 :=0x100000b4 400: 02 25 ST.W [SP + #2], R5 ..\_config\startup.c:54 while( begin < end ){ // cppcheck-suppress comparePointers 402: 07 04 SJMP $+7 ;->0x410 ..\_config\startup.c:55 *begin = 0;begin++; 404: 01 0c LD.W R4, [SP + #1] 406: 50 10 MOV R5, #0 408: 45 85 ST.W [R4], R5 40a: 01 0d LD.W R5, [SP + #1] 40c: 2d c1 ADD R5, R5, #4 40e: 01 25 ST.W [SP + #1], R5 ..\_config\startup.c:54 #endif //############# init variable who have no initialization #############// #if 1 // 0 not init this type variable begin = (unsigned int*)&__bss_start__; end = (unsigned int*)&__bss_end__; while( begin < end ){ // cppcheck-suppress comparePointers 410: 01 0d LD.W R5, [SP + #1] 412: 02 0c LD.W R4, [SP + #2] 414: 45 70 CMP R4, R5 416: f7 f8 JHI $-9 ;->0x404 ..\_config\startup.c:59 *begin = 0;begin++; } #endif //############# begin to run main function #############// main(); 418: 07 45 LD R5, [PC + #7] ;->0x434 :=0xcc4 41a: 05 5c LJMP R5 ..\_config\startup.c:60 while(1); 41c: 00 04 SJMP $+0 ;->0x41c 41e: 00 00 NOP NOP 420: 68 0e 00 00 .long 0x00000e68 ->000003688 [!!!@2@:LD.W R6, [SP + #104] @@: NOP 424: 00 00 00 10 .long 0x10000000 ->268435456 [!!!@2@:NOP @@: MOV R0, #0 428: 28 00 00 10 .long 0x10000028 ->268435496 [!!!@4@:FMLA.F32 S0, S0, S4 42c: 28 00 00 10 .long 0x10000028 ->268435496 [!!!@4@:FMLA.F32 S0, S0, S4 430: b4 00 00 10 .long 0x100000b4 ->268435636 [!!!@4@:DO #1284, $+0 ;->0x430 434: c4 0c 00 00 .long 0x00000cc4 ->000003268 [!!!@2@:LD.W R4, [SP + #196] @@: NOP 00000438 : GPIO_Write_Mode_Bits(): ..\KF32Lib\src\kf32a156_gpio.c:405 * GPIO_MODE_RMP: 重映射IO口功能模式 * GPIO_MODE_AN: 模拟模式 * 返回 无。 */ void GPIO_Write_Mode_Bits (GPIO_SFRmap* GPIOx,uint16_t GpioPin, GPIOMode_TypeDef NewState) { 438: e4 31 SUB SP, #20 43a: 02 20 ST.W [SP + #2], R0 43c: a1 58 MOV R5, R1 43e: 04 22 ST.W [SP + #4], R2 440: a6 e2 ST.H [SP + #6], R5 ..\KF32Lib\src\kf32a156_gpio.c:406 uint32_t pinpos = 0x00; 442: 50 10 MOV R5, #0 444: e5 85 ST.W [SP], R5 ..\KF32Lib\src\kf32a156_gpio.c:415 CHECK_RESTRICTION(CHECK_GPIO_ALL_PERIPH(GPIOx)); CHECK_RESTRICTION(CHECK_GPIO_PIN_MASK(GpioPin)); CHECK_RESTRICTION(CHECK_GPIO_MODE(NewState)); /*----------- 获取GPIOx_PMOD寄存器 -----------*/ tmpreg = GPIOx->PMOD; 446: 02 0d LD.W R5, [SP + #2] 448: 6d 99 LD.W R5, [R5 + #5] 44a: 01 25 ST.W [SP + #1], R5 ..\KF32Lib\src\kf32a156_gpio.c:416 while(GpioPin) 44c: 19 04 SJMP $+25 ;->0x47e ..\KF32Lib\src\kf32a156_gpio.c:418 { if(GpioPin & (uint16_t)0x01) 44e: 86 e0 LD.H R4, [SP + #6] 450: 51 10 MOV R5, #1 452: 6c d5 ANL R5, R4, R5 454: 50 38 CMP R5, #0 456: 0e f0 JZ $+14 ;->0x472 ..\KF32Lib\src\kf32a156_gpio.c:421 { /* 记录配置信息 */ tmpreg &= ~(GPIO_PMOD_PXPMD0 << pinpos); 458: 5e 82 LD.W R5, [SP] 45a: 43 10 MOV R4, #3 45c: 6c db LSL R5, R4, R5 45e: 55 68 NOT R5, R5 460: 01 0c LD.W R4, [SP + #1] 462: 6c d5 ANL R5, R4, R5 464: 01 25 ST.W [SP + #1], R5 ..\KF32Lib\src\kf32a156_gpio.c:422 tmpreg |= (uint32_t)NewState << pinpos; 466: 5e 82 LD.W R5, [SP] 468: 04 0c LD.W R4, [SP + #4] 46a: 6c db LSL R5, R4, R5 46c: 01 0c LD.W R4, [SP + #1] 46e: 6c d7 ORL R5, R4, R5 470: 01 25 ST.W [SP + #1], R5 ..\KF32Lib\src\kf32a156_gpio.c:428 } else { ; } GpioPin >>= 1; 472: a6 e0 LD.H R5, [SP + #6] 474: 29 7c LSR R5, #1 476: a6 e2 ST.H [SP + #6], R5 ..\KF32Lib\src\kf32a156_gpio.c:429 pinpos += 2; 478: 5e 82 LD.W R5, [SP] 47a: ad c0 ADD R5, R5, #2 47c: e5 85 ST.W [SP], R5 ..\KF32Lib\src\kf32a156_gpio.c:416 CHECK_RESTRICTION(CHECK_GPIO_PIN_MASK(GpioPin)); CHECK_RESTRICTION(CHECK_GPIO_MODE(NewState)); /*----------- 获取GPIOx_PMOD寄存器 -----------*/ tmpreg = GPIOx->PMOD; while(GpioPin) 47e: a6 e0 LD.H R5, [SP + #6] 480: 50 38 CMP R5, #0 482: e6 f1 JNZ $-26 ;->0x44e ..\KF32Lib\src\kf32a156_gpio.c:433 GpioPin >>= 1; pinpos += 2; } /*----------- 配置GPIOx_PMOD寄存器 -----------*/ GPIOx->PMOD = tmpreg; 484: 02 0d LD.W R5, [SP + #2] 486: 01 0c LD.W R4, [SP + #1] 488: 6c a1 ST.W [R5 + #5], R4 ..\KF32Lib\src\kf32a156_gpio.c:434 } 48a: e4 29 ADD SP, #20 48c: 1d 5c JMP LR 0000048e : GPIO_Set_Output_Data_Bits(): ..\KF32Lib\src\kf32a156_gpio.c:626 * Bit_RESET: 逻辑低电平 * Bit_SET: 逻辑高电平 * 返回 无。 */ void GPIO_Set_Output_Data_Bits (GPIO_SFRmap* GPIOx,uint16_t GpioPin, BitAction BitsValue) { 48e: ec 30 SUB SP, #12 490: e0 85 ST.W [SP], R0 492: a1 58 MOV R5, R1 494: 02 22 ST.W [SP + #2], R2 496: a2 e2 ST.H [SP + #2], R5 ..\KF32Lib\src\kf32a156_gpio.c:633 CHECK_RESTRICTION(CHECK_GPIO_ALL_PERIPH(GPIOx)); CHECK_RESTRICTION(CHECK_GPIO_PIN_MASK(GpioPin)); CHECK_RESTRICTION(CHECK_GPIO_BIT_ACTION(BitsValue)); /*----------- 设置GPIOx_POR寄存器 -----------*/ if (BitsValue != Bit_RESET) 498: 02 0d LD.W R5, [SP + #2] 49a: 50 38 CMP R5, #0 49c: 08 f0 JZ $+8 ;->0x4ac ..\KF32Lib\src\kf32a156_gpio.c:636 { /* 逻辑高电平 */ GPIOx->POR |= (uint32_t)GpioPin; 49e: 5e 82 LD.W R5, [SP] 4a0: 65 98 LD.W R4, [R5 + #1] 4a2: a2 e0 LD.H R5, [SP + #2] 4a4: 64 d7 ORL R4, R4, R5 4a6: 5e 82 LD.W R5, [SP] 4a8: 6c a0 ST.W [R5 + #1], R4 4aa: 08 04 SJMP $+8 ;->0x4ba ..\KF32Lib\src\kf32a156_gpio.c:641 } else { /* 逻辑低电平 */ GPIOx->POR &= ~((uint32_t)GpioPin); 4ac: 5e 82 LD.W R5, [SP] 4ae: 65 98 LD.W R4, [R5 + #1] 4b0: a2 e0 LD.H R5, [SP + #2] 4b2: 55 68 NOT R5, R5 4b4: 64 d5 ANL R4, R4, R5 4b6: 5e 82 LD.W R5, [SP] 4b8: 6c a0 ST.W [R5 + #1], R4 ..\KF32Lib\src\kf32a156_gpio.c:643 } } 4ba: ec 28 ADD SP, #12 4bc: 1d 5c JMP LR 000004be : SFR_Config(): KF32A156.h:14157 -- 閿熸枻鎷烽敓鏂ゆ嫹閿熸枻鎷烽敓鏂ゆ嫹 ---------------------------------------------------------------------------- */ /* 鍐欓敓鏂ゆ嫹閿熻В鍔熼敓鏉板瘎杈炬嫹閿熸枻鎷 */ static inline uint32_t SFR_Config (uint32_t SfrMem, uint32_t SfrMask, uint32_t WriteVal) { 4be: ec 30 SUB SP, #12 4c0: e0 85 ST.W [SP], R0 4c2: 01 21 ST.W [SP + #1], R1 4c4: 02 22 ST.W [SP + #2], R2 KF32A156.h:14158 return ((SfrMem & SfrMask) | (WriteVal)); 4c6: 5e 82 LD.W R5, [SP] 4c8: 01 0c LD.W R4, [SP + #1] 4ca: 25 d5 ANL R4, R5, R4 4cc: 02 0d LD.W R5, [SP + #2] 4ce: 6c d7 ORL R5, R4, R5 KF32A156.h:14159 } 4d0: 05 58 MOV R0, R5 4d2: ec 28 ADD SP, #12 4d4: 1d 5c JMP LR ... 000004d8 : INT_All_Enable(): ..\KF32Lib\src\kf32a156_int.c:234 * 输入 NewState: 全局可屏蔽中断使能, * 取值范围为:TRUE 或 FALSE。 * 返回 无。 */ void INT_All_Enable (FunctionalState NewState) { 4d8: e4 30 SUB SP, #4 4da: e0 85 ST.W [SP], R0 ..\KF32Lib\src\kf32a156_int.c:239 /* 参数校验 */ CHECK_RESTRICTION(CHECK_FUNCTIONAL_STATE(NewState)); /*---------------- 设置INT_CTL0寄存器AIE位 ----------------*/ if (NewState != FALSE) 4dc: 5e 82 LD.W R5, [SP] 4de: 50 38 CMP R5, #0 4e0: 04 f0 JZ $+4 ;->0x4e8 ..\KF32Lib\src\kf32a156_int.c:242 { /* 全局可屏蔽中断使能 */ SFR_SET_BIT_ASM(INT_CTL0, INT_CTL0_AIE_POS); 4e2: 04 45 LD R5, [PC + #4] ;->0x4f0 :=0x40200000 4e4: 28 4c SET [R5], #0 4e6: 03 04 SJMP $+3 ;->0x4ec ..\KF32Lib\src\kf32a156_int.c:247 } else { /* 全局可屏蔽中断禁止 */ SFR_CLR_BIT_ASM(INT_CTL0, INT_CTL0_AIE_POS); 4e8: 02 45 LD R5, [PC + #2] ;->0x4f0 :=0x40200000 4ea: 28 4e CLR [R5], #0 ..\KF32Lib\src\kf32a156_int.c:249 } } 4ec: e4 28 ADD SP, #4 4ee: 1d 5c JMP LR 4f0: 00 00 20 40 .long 0x40200000 ->1075838976 [!!!@2@:NOP @@: LD R0, [PC + #32] ;->0x570 :=0x10413350 000004f4 : INT_Interrupt_Enable(): ..\KF32Lib\src\kf32a156_int.c:261 * NewState: 外设或内核中断使能状态, * 取值范围为:TRUE 或 FALSE。 * 返回 无。 */ void INT_Interrupt_Enable (InterruptIndex Peripheral, FunctionalState NewState) { 4f4: 81 5f PUSH {R6,LR} 4f6: e0 31 SUB SP, #16 4f8: 02 20 ST.W [SP + #2], R0 4fa: 03 21 ST.W [SP + #3], R1 ..\KF32Lib\src\kf32a156_int.c:262 uint32_t tmask = 0x00; 4fc: 50 10 MOV R5, #0 4fe: e5 85 ST.W [SP], R5 ..\KF32Lib\src\kf32a156_int.c:263 uint32_t tmpreg = 0x00; 500: 50 10 MOV R5, #0 502: 01 25 ST.W [SP + #1], R5 ..\KF32Lib\src\kf32a156_int.c:269 /* 参数校验 */ CHECK_RESTRICTION(CHECK_PERIPHERAL_INTERRUPT_INDEX(Peripheral)); CHECK_RESTRICTION(CHECK_FUNCTIONAL_STATE(NewState)); if(Peripheral <= INT_SysTick) 504: 02 0d LD.W R5, [SP + #2] 506: 5f 38 CMP R5, #15 508: 16 f8 JHI $+22 ;->0x534 ..\KF32Lib\src\kf32a156_int.c:272 { /*---------------- 设置INT_EIE0寄存器 ----------------*/ tmask = ((uint32_t)1 << Peripheral); 50a: 02 0c LD.W R4, [SP + #2] 50c: 51 10 MOV R5, #1 50e: 2d db LSL R5, R5, R4 510: e5 85 ST.W [SP], R5 ..\KF32Lib\src\kf32a156_int.c:273 tmpreg = ((uint32_t)NewState << Peripheral); 512: 02 0d LD.W R5, [SP + #2] 514: 03 0c LD.W R4, [SP + #3] 516: 6c db LSL R5, R4, R5 518: 01 25 ST.W [SP + #1], R5 ..\KF32Lib\src\kf32a156_int.c:274 INT_EIE0 = SFR_Config(INT_EIE0, ~tmask, tmpreg); 51a: 23 46 LD R6, [PC + #35] ;->0x5a4 :=0x40200000 51c: 22 45 LD R5, [PC + #34] ;->0x5a4 :=0x40200000 51e: 65 98 LD.W R4, [R5 + #1] 520: 5e 82 LD.W R5, [SP] 522: 55 68 NOT R5, R5 524: 04 58 MOV R0, R4 526: 25 58 MOV R1, R5 528: 01 0a LD.W R2, [SP + #1] 52a: 20 45 LD R5, [PC + #32] ;->0x5a8 :=0x4be 52c: 05 5c LJMP R5 52e: a0 58 MOV R5, R0 530: 75 a0 ST.W [R6 + #1], R5 532: 34 04 SJMP $+52 ;->0x59a ..\KF32Lib\src\kf32a156_int.c:276 } else if(Peripheral <= INT_SPI1) 534: 02 0d LD.W R5, [SP + #2] 536: 5f 3a CMP R5, #47 538: 18 f8 JHI $+24 ;->0x568 ..\KF32Lib\src\kf32a156_int.c:279 { /*---------------- 设置INT_EIE1寄存器 ----------------*/ tmask = ((uint32_t)1 << (Peripheral - INT_WWDT)); 53a: 02 0d LD.W R5, [SP + #2] 53c: 50 31 SUB R5, #16 53e: 41 10 MOV R4, #1 540: 6c db LSL R5, R4, R5 542: e5 85 ST.W [SP], R5 ..\KF32Lib\src\kf32a156_int.c:280 tmpreg = ((uint32_t)NewState << (Peripheral - INT_WWDT)); 544: 02 0d LD.W R5, [SP + #2] 546: 50 31 SUB R5, #16 548: 03 0c LD.W R4, [SP + #3] 54a: 6c db LSL R5, R4, R5 54c: 01 25 ST.W [SP + #1], R5 ..\KF32Lib\src\kf32a156_int.c:281 INT_EIE1 = SFR_Config(INT_EIE1, ~tmask, tmpreg); 54e: 16 46 LD R6, [PC + #22] ;->0x5a4 :=0x40200000 550: 15 45 LD R5, [PC + #21] ;->0x5a4 :=0x40200000 552: e5 98 LD.W R4, [R5 + #3] 554: 5e 82 LD.W R5, [SP] 556: 55 68 NOT R5, R5 558: 04 58 MOV R0, R4 55a: 25 58 MOV R1, R5 55c: 01 0a LD.W R2, [SP + #1] 55e: 13 45 LD R5, [PC + #19] ;->0x5a8 :=0x4be 560: 05 5c LJMP R5 562: a0 58 MOV R5, R0 564: f5 a0 ST.W [R6 + #3], R5 566: 1a 04 SJMP $+26 ;->0x59a ..\KF32Lib\src\kf32a156_int.c:283 } else if(Peripheral <= INT_USART7) 568: 02 0d LD.W R5, [SP + #2] 56a: 5f 3c CMP R5, #79 56c: 17 f8 JHI $+23 ;->0x59a ..\KF32Lib\src\kf32a156_int.c:286 { /*---------------- 设置INT_EIE2寄存器 ----------------*/ tmask = ((uint32_t)1 << (Peripheral - INT_DMA1)); 56e: 02 0d LD.W R5, [SP + #2] 570: 50 33 SUB R5, #48 572: 41 10 MOV R4, #1 574: 6c db LSL R5, R4, R5 576: e5 85 ST.W [SP], R5 ..\KF32Lib\src\kf32a156_int.c:287 tmpreg = ((uint32_t)NewState << (Peripheral - INT_DMA1)); 578: 02 0d LD.W R5, [SP + #2] 57a: 50 33 SUB R5, #48 57c: 03 0c LD.W R4, [SP + #3] 57e: 6c db LSL R5, R4, R5 580: 01 25 ST.W [SP + #1], R5 ..\KF32Lib\src\kf32a156_int.c:288 INT_EIE2 = SFR_Config(INT_EIE2, ~tmask, tmpreg); 582: 09 46 LD R6, [PC + #9] ;->0x5a4 :=0x40200000 584: 08 45 LD R5, [PC + #8] ;->0x5a4 :=0x40200000 586: 65 99 LD.W R4, [R5 + #5] 588: 5e 82 LD.W R5, [SP] 58a: 55 68 NOT R5, R5 58c: 04 58 MOV R0, R4 58e: 25 58 MOV R1, R5 590: 01 0a LD.W R2, [SP + #1] 592: 06 45 LD R5, [PC + #6] ;->0x5a8 :=0x4be 594: 05 5c LJMP R5 596: a0 58 MOV R5, R0 598: 75 a1 ST.W [R6 + #5], R5 ..\KF32Lib\src\kf32a156_int.c:294 } else { ; } } 59a: e0 29 ADD SP, #16 59c: 06 5d POP R6 59e: 0d 5d POP LR 5a0: 1d 5c JMP LR 5a2: 00 00 NOP NOP 5a4: 00 00 20 40 .long 0x40200000 ->1075838976 [!!!@2@:NOP @@: LD R0, [PC + #32] ;->0x624 :=0x10205825 5a8: be 04 00 00 .long 0x000004be ->000001214 [!!!@2@:SJMP $+190 ;->0x724 @@: NOP 000005ac : INT_Clear_Interrupt_Flag(): ..\KF32Lib\src\kf32a156_int.c:396 * 输入 Peripheral: 外设或内核中断向量编号,取值范围为: * 枚举类型InterruptIndex中的外设中断向量编号。 * 返回 无。 */ void INT_Clear_Interrupt_Flag (InterruptIndex Peripheral) { 5ac: 81 5f PUSH {R6,LR} 5ae: e8 30 SUB SP, #8 5b0: 01 20 ST.W [SP + #1], R0 ..\KF32Lib\src\kf32a156_int.c:397 uint32_t tmask = 0; 5b2: 50 10 MOV R5, #0 5b4: e5 85 ST.W [SP], R5 ..\KF32Lib\src\kf32a156_int.c:402 /* 参数校验 */ CHECK_RESTRICTION(CHECK_PERIPHERAL_INTERRUPT_INDEX(Peripheral)); if(Peripheral <= INT_SysTick) 5b6: 01 0d LD.W R5, [SP + #1] 5b8: 5f 38 CMP R5, #15 5ba: 12 f8 JHI $+18 ;->0x5de ..\KF32Lib\src\kf32a156_int.c:405 { /*---------------- 读取INT_EIF0寄存器 ----------------*/ tmask = ((uint32_t)1 << Peripheral); 5bc: 01 0c LD.W R4, [SP + #1] 5be: 51 10 MOV R5, #1 5c0: 2d db LSL R5, R5, R4 5c2: e5 85 ST.W [SP], R5 ..\KF32Lib\src\kf32a156_int.c:406 INT_EIF0 = SFR_Config(INT_EIF0,~tmask,0); 5c4: 1d 46 LD R6, [PC + #29] ;->0x638 :=0x40200000 5c6: 1d 45 LD R5, [PC + #29] ;->0x638 :=0x40200000 5c8: e5 99 LD.W R4, [R5 + #7] 5ca: 5e 82 LD.W R5, [SP] 5cc: 55 68 NOT R5, R5 5ce: 04 58 MOV R0, R4 5d0: 25 58 MOV R1, R5 5d2: 20 10 MOV R2, #0 5d4: 1a 45 LD R5, [PC + #26] ;->0x63c :=0x4be 5d6: 05 5c LJMP R5 5d8: a0 58 MOV R5, R0 5da: f5 a1 ST.W [R6 + #7], R5 5dc: 2a 04 SJMP $+42 ;->0x630 ..\KF32Lib\src\kf32a156_int.c:408 } else if(Peripheral <= INT_SPI1) 5de: 01 0d LD.W R5, [SP + #1] 5e0: 5f 3a CMP R5, #47 5e2: 13 f8 JHI $+19 ;->0x608 ..\KF32Lib\src\kf32a156_int.c:411 { /*---------------- 读取INT_EIF1寄存器 ----------------*/ tmask = ((uint32_t)1 << (Peripheral - INT_WWDT)); 5e4: 01 0d LD.W R5, [SP + #1] 5e6: 50 31 SUB R5, #16 5e8: 41 10 MOV R4, #1 5ea: 6c db LSL R5, R4, R5 5ec: e5 85 ST.W [SP], R5 ..\KF32Lib\src\kf32a156_int.c:412 INT_EIF1 = SFR_Config(INT_EIF1,~tmask,0); 5ee: 13 46 LD R6, [PC + #19] ;->0x638 :=0x40200000 5f0: 12 45 LD R5, [PC + #18] ;->0x638 :=0x40200000 5f2: 65 9a LD.W R4, [R5 + #9] 5f4: 5e 82 LD.W R5, [SP] 5f6: 55 68 NOT R5, R5 5f8: 04 58 MOV R0, R4 5fa: 25 58 MOV R1, R5 5fc: 20 10 MOV R2, #0 5fe: 10 45 LD R5, [PC + #16] ;->0x63c :=0x4be 600: 05 5c LJMP R5 602: a0 58 MOV R5, R0 604: 75 a2 ST.W [R6 + #9], R5 606: 15 04 SJMP $+21 ;->0x630 ..\KF32Lib\src\kf32a156_int.c:414 } else if(Peripheral <= INT_USART7) 608: 01 0d LD.W R5, [SP + #1] 60a: 5f 3c CMP R5, #79 60c: 12 f8 JHI $+18 ;->0x630 ..\KF32Lib\src\kf32a156_int.c:417 { /*---------------- 读取INT_EIF2寄存器 ----------------*/ tmask = ((uint32_t)1 << (Peripheral - INT_DMA1)); 60e: 01 0d LD.W R5, [SP + #1] 610: 50 33 SUB R5, #48 612: 41 10 MOV R4, #1 614: 6c db LSL R5, R4, R5 616: e5 85 ST.W [SP], R5 ..\KF32Lib\src\kf32a156_int.c:418 INT_EIF2 = SFR_Config(INT_EIF2,~tmask,0); 618: 08 46 LD R6, [PC + #8] ;->0x638 :=0x40200000 61a: 08 45 LD R5, [PC + #8] ;->0x638 :=0x40200000 61c: e5 9a LD.W R4, [R5 + #11] 61e: 5e 82 LD.W R5, [SP] 620: 55 68 NOT R5, R5 622: 04 58 MOV R0, R4 624: 25 58 MOV R1, R5 626: 20 10 MOV R2, #0 628: 05 45 LD R5, [PC + #5] ;->0x63c :=0x4be 62a: 05 5c LJMP R5 62c: a0 58 MOV R5, R0 62e: f5 a2 ST.W [R6 + #11], R5 ..\KF32Lib\src\kf32a156_int.c:424 } else { ; } } 630: e8 28 ADD SP, #8 632: 06 5d POP R6 634: 0d 5d POP LR 636: 1d 5c JMP LR 638: 00 00 20 40 .long 0x40200000 ->1075838976 [!!!@2@:NOP @@: LD R0, [PC + #32] ;->0x6b8 :=0x4022501 63c: be 04 00 00 .long 0x000004be ->000001214 [!!!@2@:SJMP $+190 ;->0x7b8 @@: NOP 00000640 : INT_Interrupt_Priority_Config(): ..\KF32Lib\src\kf32a156_int.c:441 * (GROUP) == INT_PRIORITY_GROUP_0VS4时:Preemption取值范围为:0~0,SubPriority取值范围为:0~15 * * 返回 无。 */ void INT_Interrupt_Priority_Config (InterruptIndex Peripheral,uint32_t Preemption, uint32_t SubPriority) { 640: 81 5f PUSH {R6,LR} 642: ec 31 SUB SP, #28 644: 04 20 ST.W [SP + #4], R0 646: 05 21 ST.W [SP + #5], R1 648: 06 22 ST.W [SP + #6], R2 ..\KF32Lib\src\kf32a156_int.c:443 uint32_t tmpreg; uint32_t regoffset = 0; 64a: 50 10 MOV R5, #0 64c: 02 25 ST.W [SP + #2], R5 ..\KF32Lib\src\kf32a156_int.c:444 uint32_t bitoffset = 0; 64e: 50 10 MOV R5, #0 650: 03 25 ST.W [SP + #3], R5 ..\KF32Lib\src\kf32a156_int.c:445 uint32_t priorityconfig = 0; 652: 50 10 MOV R5, #0 654: 01 25 ST.W [SP + #1], R5 ..\KF32Lib\src\kf32a156_int.c:448 /*--------- 获取INT_CTL0寄存器的PRIGROUP位 ---------*/ tmpreg = INT_CTL0; 656: 30 45 LD R5, [PC + #48] ;->0x714 :=0x40200000 658: 55 82 LD.W R5, [R5] 65a: e5 85 ST.W [SP], R5 ..\KF32Lib\src\kf32a156_int.c:449 tmpreg &= INT_CTL0_PRIGROUP; 65c: 4e 82 LD.W R4, [SP] 65e: 56 10 MOV R5, #6 660: 6c d5 ANL R5, R4, R5 662: e5 85 ST.W [SP], R5 ..\KF32Lib\src\kf32a156_int.c:456 /* 参数校验 */ CHECK_RESTRICTION(CHECK_PERIPHERAL_INTERRUPT_INDEX(Peripheral)); CHECK_RESTRICTION(CHECK_PRIORITY_CONFIG(tmpreg, Preemption, SubPriority)); /*--------- 获取中断优先级控制位的值 ---------*/ switch (tmpreg) 664: 5e 82 LD.W R5, [SP] 666: 52 38 CMP R5, #2 668: 13 f0 JZ $+19 ;->0x68e 66a: 52 38 CMP R5, #2 66c: 04 f8 JHI $+4 ;->0x674 66e: 50 38 CMP R5, #0 670: 07 f0 JZ $+7 ;->0x67e 672: 25 04 SJMP $+37 ;->0x6bc 674: 54 38 CMP R5, #4 676: 15 f0 JZ $+21 ;->0x6a0 678: 56 38 CMP R5, #6 67a: 1c f0 JZ $+28 ;->0x6b2 67c: 20 04 SJMP $+32 ;->0x6bc ..\KF32Lib\src\kf32a156_int.c:459 { case INT_PRIORITY_GROUP_3VS1: priorityconfig = (Preemption << 1) | (SubPriority & 0x1); 67e: 05 0d LD.W R5, [SP + #5] 680: 6d c3 ADD R5, R5, R5 682: 06 0b LD.W R3, [SP + #6] 684: 41 10 MOV R4, #1 686: 23 d5 ANL R4, R3, R4 688: 2d d7 ORL R5, R5, R4 68a: 01 25 ST.W [SP + #1], R5 ..\KF32Lib\src\kf32a156_int.c:460 break; 68c: 19 04 SJMP $+25 ;->0x6be ..\KF32Lib\src\kf32a156_int.c:462 case INT_PRIORITY_GROUP_2VS2: priorityconfig = (Preemption << 2) | (SubPriority & 0x3); 68e: 05 0d LD.W R5, [SP + #5] 690: 32 10 MOV R3, #2 692: e5 da LSL R4, R5, R3 694: 06 0b LD.W R3, [SP + #6] 696: 53 10 MOV R5, #3 698: 6b d5 ANL R5, R3, R5 69a: 6c d7 ORL R5, R4, R5 69c: 01 25 ST.W [SP + #1], R5 ..\KF32Lib\src\kf32a156_int.c:463 break; 69e: 10 04 SJMP $+16 ;->0x6be ..\KF32Lib\src\kf32a156_int.c:465 case INT_PRIORITY_GROUP_1VS3: priorityconfig = (Preemption << 3) | (SubPriority & 0x7); 6a0: 05 0d LD.W R5, [SP + #5] 6a2: 33 10 MOV R3, #3 6a4: e5 da LSL R4, R5, R3 6a6: 06 0b LD.W R3, [SP + #6] 6a8: 57 10 MOV R5, #7 6aa: 6b d5 ANL R5, R3, R5 6ac: 6c d7 ORL R5, R4, R5 6ae: 01 25 ST.W [SP + #1], R5 ..\KF32Lib\src\kf32a156_int.c:466 break; 6b0: 07 04 SJMP $+7 ;->0x6be ..\KF32Lib\src\kf32a156_int.c:468 case INT_PRIORITY_GROUP_0VS4: priorityconfig = SubPriority & 0xF; 6b2: 06 0c LD.W R4, [SP + #6] 6b4: 5f 10 MOV R5, #15 6b6: 6c d5 ANL R5, R4, R5 6b8: 01 25 ST.W [SP + #1], R5 ..\KF32Lib\src\kf32a156_int.c:469 break; 6ba: 02 04 SJMP $+2 ;->0x6be ..\KF32Lib\src\kf32a156_int.c:472 default: CHECK_RESTRICTION(0); break; 6bc: 00 00 NOP NOP ..\KF32Lib\src\kf32a156_int.c:476 } /*--------- 配置中断优先级控制位 ---------*/ if (Peripheral <= INT_USART7) 6be: 04 0d LD.W R5, [SP + #4] 6c0: 5f 3c CMP R5, #79 6c2: 0d f8 JHI $+13 ;->0x6dc ..\KF32Lib\src\kf32a156_int.c:480 { /*---------------- 设置INT_IPx(x=0~18)寄存器 ----------------*/ /* 获取中断优先级寄存器地址 */ regoffset = (Peripheral - INT_Reserved4) >> 2; 6c4: 04 0d LD.W R5, [SP + #4] 6c6: 2d cd SUB R5, R5, #4 6c8: 2a 7c LSR R5, #2 6ca: 02 25 ST.W [SP + #2], R5 ..\KF32Lib\src\kf32a156_int.c:481 tmpreg = (uint32_t)&INT_IP0; 6cc: 13 45 LD R5, [PC + #19] ;->0x718 :=0x40200034 6ce: e5 85 ST.W [SP], R5 ..\KF32Lib\src\kf32a156_int.c:482 tmpreg = tmpreg + (regoffset << 2); 6d0: 02 0d LD.W R5, [SP + #2] 6d2: 32 10 MOV R3, #2 6d4: e5 da LSL R4, R5, R3 6d6: 5e 82 LD.W R5, [SP] 6d8: 2d c3 ADD R5, R5, R4 6da: e5 85 ST.W [SP], R5 ..\KF32Lib\src\kf32a156_int.c:490 { ; } /*---------------- 设置INT_IPx(x=0~30)寄存器 ----------------*/ bitoffset = ((Peripheral & 0x3) * 8) + 4; 6dc: 04 0c LD.W R4, [SP + #4] 6de: 53 10 MOV R5, #3 6e0: 6c d5 ANL R5, R4, R5 6e2: 2b 7a LSL R5, #3 6e4: 2d c1 ADD R5, R5, #4 6e6: 03 25 ST.W [SP + #3], R5 ..\KF32Lib\src\kf32a156_int.c:491 *(volatile uint32_t*)tmpreg 6e8: 6e 82 LD.W R6, [SP] ..\KF32Lib\src\kf32a156_int.c:492 = SFR_Config (*(volatile uint32_t*)tmpreg, 6ea: 5e 82 LD.W R5, [SP] 6ec: 45 82 LD.W R4, [R5] ..\KF32Lib\src\kf32a156_int.c:493 ~(0xF << bitoffset), 6ee: 03 0b LD.W R3, [SP + #3] 6f0: 5f 10 MOV R5, #15 6f2: ed da LSL R5, R5, R3 6f4: 55 68 NOT R5, R5 ..\KF32Lib\src\kf32a156_int.c:492 } /*---------------- 设置INT_IPx(x=0~30)寄存器 ----------------*/ bitoffset = ((Peripheral & 0x3) * 8) + 4; *(volatile uint32_t*)tmpreg = SFR_Config (*(volatile uint32_t*)tmpreg, 6f6: 03 0b LD.W R3, [SP + #3] 6f8: 01 0a LD.W R2, [SP + #1] 6fa: da da LSL R3, R2, R3 6fc: 04 58 MOV R0, R4 6fe: 25 58 MOV R1, R5 700: 43 58 MOV R2, R3 702: 07 45 LD R5, [PC + #7] ;->0x71c :=0x4be 704: 05 5c LJMP R5 706: a0 58 MOV R5, R0 708: 65 85 ST.W [R6], R5 ..\KF32Lib\src\kf32a156_int.c:495 ~(0xF << bitoffset), priorityconfig << bitoffset); } 70a: ec 29 ADD SP, #28 70c: 06 5d POP R6 70e: 0d 5d POP LR 710: 1d 5c JMP LR 712: 00 00 NOP NOP 714: 00 00 20 40 .long 0x40200000 ->1075838976 [!!!@2@:NOP @@: LD R0, [PC + #32] ;->0x794 :=0x5c1d5d0d 718: 34 00 20 40 .long 0x40200034 ->1075839028 71c: be 04 00 00 .long 0x000004be ->000001214 [!!!@2@:SJMP $+190 ;->0x898 @@: NOP 00000720 : SFR_Config(): KF32A156.h:14157 -- 閿熸枻鎷烽敓鏂ゆ嫹閿熸枻鎷烽敓鏂ゆ嫹 ---------------------------------------------------------------------------- */ /* 鍐欓敓鏂ゆ嫹閿熻В鍔熼敓鏉板瘎杈炬嫹閿熸枻鎷 */ static inline uint32_t SFR_Config (uint32_t SfrMem, uint32_t SfrMask, uint32_t WriteVal) { 720: ec 30 SUB SP, #12 722: e0 85 ST.W [SP], R0 724: 01 21 ST.W [SP + #1], R1 726: 02 22 ST.W [SP + #2], R2 KF32A156.h:14158 return ((SfrMem & SfrMask) | (WriteVal)); 728: 5e 82 LD.W R5, [SP] 72a: 01 0c LD.W R4, [SP + #1] 72c: 25 d5 ANL R4, R5, R4 72e: 02 0d LD.W R5, [SP + #2] 730: 6c d7 ORL R5, R4, R5 KF32A156.h:14159 } 732: 05 58 MOV R0, R5 734: ec 28 ADD SP, #12 736: 1d 5c JMP LR 00000738 : OSC_LFCK_Division_Config(): ..\KF32Lib\src\kf32a156_osc.c:190 * LFCK_DIVISION_64: 1/64分频, * LFCK_DIVISION_128: 1/128分频, * 返回 无。 */ void OSC_LFCK_Division_Config (uint32_t LFDivision) { 738: 81 5f PUSH {R6,LR} 73a: e8 30 SUB SP, #8 73c: 01 20 ST.W [SP + #1], R0 ..\KF32Lib\src\kf32a156_osc.c:197 /* 参数校验 */ CHECK_RESTRICTION(CHECK_LFCK_DIVISION(LFDivision)); /*---------------- 设置OSC_CTL0寄存器LFCKDIV位 ----------------*/ tmpreg = LFDivision << OSC_CTL0_LFCKDIV0_POS; 73e: 01 0d LD.W R5, [SP + #1] 740: a8 7b LSL R5, #24 742: e5 85 ST.W [SP], R5 ..\KF32Lib\src\kf32a156_osc.c:198 OSC_CTL0 = SFR_Config (OSC_CTL0, ~OSC_CTL0_LFCKDIV, tmpreg); 744: 61 10 MOV R6, #1 746: b6 7b LSL R6, #30 748: 51 10 MOV R5, #1 74a: ae 7b LSL R5, #30 74c: 55 82 LD.W R5, [R5] 74e: 05 58 MOV R0, R5 750: 05 41 LD R1, [PC + #5] ;->0x764 :=0xf8ffffff 752: 2e 82 LD.W R2, [SP] 754: 05 45 LD R5, [PC + #5] ;->0x768 :=0x720 756: 05 5c LJMP R5 758: a0 58 MOV R5, R0 75a: 65 85 ST.W [R6], R5 ..\KF32Lib\src\kf32a156_osc.c:199 } 75c: e8 28 ADD SP, #8 75e: 06 5d POP R6 760: 0d 5d POP LR 762: 1d 5c JMP LR 764: ff ff ff f8 .long 0xf8ffffff ->-117440513 768: 20 07 00 00 .long 0x00000720 ->000001824 [!!!@2@:SJMP $-224 ;->0x5a8 @@: NOP 0000076c : OSC_HFCK_Division_Config(): ..\KF32Lib\src\kf32a156_osc.c:217 * HFCK_DIVISION_256: 1/256分频, * HFCK_DIVISION_512: 1/512分频, * 返回 无。 */ void OSC_HFCK_Division_Config (uint32_t HFDivision) { 76c: 81 5f PUSH {R6,LR} 76e: e8 30 SUB SP, #8 770: 01 20 ST.W [SP + #1], R0 ..\KF32Lib\src\kf32a156_osc.c:224 /* 参数校验 */ CHECK_RESTRICTION(CHECK_HFCK_DIVISION(HFDivision)); /*---------------- 设置OSC_CTL0寄存器HFCKDIV位 ----------------*/ tmpreg = HFDivision << OSC_CTL0_HFCKDIV0_POS; 772: 01 0d LD.W R5, [SP + #1] 774: 2c 7b LSL R5, #20 776: e5 85 ST.W [SP], R5 ..\KF32Lib\src\kf32a156_osc.c:225 OSC_CTL0 = SFR_Config (OSC_CTL0, ~OSC_CTL0_HFCKDIV, tmpreg); 778: 61 10 MOV R6, #1 77a: b6 7b LSL R6, #30 77c: 51 10 MOV R5, #1 77e: ae 7b LSL R5, #30 780: 55 82 LD.W R5, [R5] 782: 05 58 MOV R0, R5 784: 05 41 LD R1, [PC + #5] ;->0x798 :=0xff0fffff 786: 2e 82 LD.W R2, [SP] 788: 05 45 LD R5, [PC + #5] ;->0x79c :=0x720 78a: 05 5c LJMP R5 78c: a0 58 MOV R5, R0 78e: 65 85 ST.W [R6], R5 ..\KF32Lib\src\kf32a156_osc.c:226 } 790: e8 28 ADD SP, #8 792: 06 5d POP R6 794: 0d 5d POP LR 796: 1d 5c JMP LR 798: ff ff 0f ff .long 0xff0fffff ->-15728641 79c: 20 07 00 00 .long 0x00000720 ->000001824 [!!!@2@:SJMP $-224 ;->0x5dc @@: NOP 000007a0 : OSC_SCK_Division_Config(): ..\KF32Lib\src\kf32a156_osc.c:262 * SCLK_DIVISION_64: 1/64分频, * SCLK_DIVISION_128: 1/128分频, * 返回 无。 */ void OSC_SCK_Division_Config (uint32_t SclkDivision) { 7a0: 81 5f PUSH {R6,LR} 7a2: e8 30 SUB SP, #8 7a4: 01 20 ST.W [SP + #1], R0 ..\KF32Lib\src\kf32a156_osc.c:269 /* 参数校验 */ CHECK_RESTRICTION(CHECK_SCLK_DIVISION(SclkDivision)); /*---------------- 设置OSC_CTL0寄存器SCKDIV位 ----------------*/ tmpreg = SclkDivision << OSC_CTL0_SCKDIV0_POS; 7a6: 01 0d LD.W R5, [SP + #1] 7a8: 28 7b LSL R5, #16 7aa: e5 85 ST.W [SP], R5 ..\KF32Lib\src\kf32a156_osc.c:270 OSC_CTL0 = SFR_Config (OSC_CTL0, ~OSC_CTL0_SCKDIV, tmpreg); 7ac: 61 10 MOV R6, #1 7ae: b6 7b LSL R6, #30 7b0: 51 10 MOV R5, #1 7b2: ae 7b LSL R5, #30 7b4: 55 82 LD.W R5, [R5] 7b6: 05 58 MOV R0, R5 7b8: 05 41 LD R1, [PC + #5] ;->0x7cc :=0xfff8ffff 7ba: 2e 82 LD.W R2, [SP] 7bc: 05 45 LD R5, [PC + #5] ;->0x7d0 :=0x720 7be: 05 5c LJMP R5 7c0: a0 58 MOV R5, R0 7c2: 65 85 ST.W [R6], R5 ..\KF32Lib\src\kf32a156_osc.c:271 } 7c4: e8 28 ADD SP, #8 7c6: 06 5d POP R6 7c8: 0d 5d POP LR 7ca: 1d 5c JMP LR 7cc: ff ff f8 ff .long 0xfff8ffff ->-00458753 7d0: 20 07 00 00 .long 0x00000720 ->000001824 [!!!@2@:SJMP $-224 ;->0x610 @@: NOP 000007d4 : OSC_PLL_Input_Source_Config(): ..\KF32Lib\src\kf32a156_osc.c:281 * PLL_INPUT_INTHF: 选择INTHF作为PLL输入时钟, * PLL_INPUT_EXTHF: 选择EXTHF作为PLL输入时钟。 * 返回 无。 */ void OSC_PLL_Input_Source_Config (uint32_t NewState) { 7d4: e4 30 SUB SP, #4 7d6: e0 85 ST.W [SP], R0 ..\KF32Lib\src\kf32a156_osc.c:286 /* 参数校验 */ CHECK_RESTRICTION(CHECK_PLL_INPUT(NewState)); /*---------------- 设置OSC_CTL0寄存器PLL0CKS位 ----------------*/ if (NewState != PLL_INPUT_INTHF) 7d8: 5e 82 LD.W R5, [SP] 7da: 50 38 CMP R5, #0 7dc: 05 f0 JZ $+5 ;->0x7e6 ..\KF32Lib\src\kf32a156_osc.c:289 { /* 选择EXTHF作为PLL输入时钟 */ SFR_SET_BIT_ASM(OSC_CTL0, OSC_CTL0_PLLCKS_POS); 7de: 51 10 MOV R5, #1 7e0: ae 7b LSL R5, #30 7e2: ac 4c SET [R5], #12 7e4: 04 04 SJMP $+4 ;->0x7ec ..\KF32Lib\src\kf32a156_osc.c:294 } else { /* 选择INTHF作为PLL输入时钟 */ SFR_CLR_BIT_ASM(OSC_CTL0, OSC_CTL0_PLLCKS_POS); 7e6: 51 10 MOV R5, #1 7e8: ae 7b LSL R5, #30 7ea: ac 4e CLR [R5], #12 ..\KF32Lib\src\kf32a156_osc.c:296 } } 7ec: e4 28 ADD SP, #4 7ee: 1d 5c JMP LR 000007f0 : OSC_HFCK_Source_Config(): ..\KF32Lib\src\kf32a156_osc.c:308 * HFCK_SOURCE_PLL: 选择PLL输出作为HFCLK时钟, * HFCK_SOURCE_LP4M: 选择LPM输出作为HFCLK时钟, * 返回 无。 */ void OSC_HFCK_Source_Config (uint32_t HFSource) { 7f0: 81 5f PUSH {R6,LR} 7f2: e8 30 SUB SP, #8 7f4: 01 20 ST.W [SP + #1], R0 ..\KF32Lib\src\kf32a156_osc.c:315 /* 参数校验 */ CHECK_RESTRICTION(CHECK_HFCK_SOURCE(HFSource)); /*---------------- 设置OSC_CTL0寄存器HFCKS位 ----------------*/ tmpreg = HFSource << OSC_CTL0_HFCKS0_POS; 7f6: 01 0d LD.W R5, [SP + #1] 7f8: a9 7a LSL R5, #9 7fa: e5 85 ST.W [SP], R5 ..\KF32Lib\src\kf32a156_osc.c:316 OSC_CTL0 = SFR_Config (OSC_CTL0, ~OSC_CTL0_HFCKS, tmpreg); 7fc: 61 10 MOV R6, #1 7fe: b6 7b LSL R6, #30 800: 51 10 MOV R5, #1 802: ae 7b LSL R5, #30 804: 55 82 LD.W R5, [R5] 806: 05 58 MOV R0, R5 808: 05 41 LD R1, [PC + #5] ;->0x81c :=0xfffff1ff 80a: 2e 82 LD.W R2, [SP] 80c: 05 45 LD R5, [PC + #5] ;->0x820 :=0x720 80e: 05 5c LJMP R5 810: a0 58 MOV R5, R0 812: 65 85 ST.W [R6], R5 ..\KF32Lib\src\kf32a156_osc.c:317 } 814: e8 28 ADD SP, #8 816: 06 5d POP R6 818: 0d 5d POP LR 81a: 1d 5c JMP LR 81c: ff f1 ff ff .long 0xfffff1ff ->-00003585 820: 20 07 00 00 .long 0x00000720 ->000001824 [!!!@2@:SJMP $-224 ;->0x660 @@: NOP 00000824 : OSC_HFCK_Enable(): ..\KF32Lib\src\kf32a156_osc.c:326 * 输入 NewState: 高频外设时钟允许使能状态, * 取值范围为:TRUE 或 FALSE。 * 返回 无。 */ void OSC_HFCK_Enable (FunctionalState NewState) { 824: e4 30 SUB SP, #4 826: e0 85 ST.W [SP], R0 ..\KF32Lib\src\kf32a156_osc.c:331 /* 参数校验 */ CHECK_RESTRICTION(CHECK_FUNCTIONAL_STATE(NewState)); /*---------------- 设置OSC_CTL0寄存器HFCKEN位 ----------------*/ if (NewState != FALSE) 828: 5e 82 LD.W R5, [SP] 82a: 50 38 CMP R5, #0 82c: 05 f0 JZ $+5 ;->0x836 ..\KF32Lib\src\kf32a156_osc.c:334 { /* HFCLK时钟信号允许 */ SFR_SET_BIT_ASM(OSC_CTL0, OSC_CTL0_HFCKEN_POS); 82e: 51 10 MOV R5, #1 830: ae 7b LSL R5, #30 832: a8 4c SET [R5], #8 834: 04 04 SJMP $+4 ;->0x83c ..\KF32Lib\src\kf32a156_osc.c:339 } else { /* HFCLK时钟信号禁止 */ SFR_CLR_BIT_ASM(OSC_CTL0, OSC_CTL0_HFCKEN_POS); 836: 51 10 MOV R5, #1 838: ae 7b LSL R5, #30 83a: a8 4e CLR [R5], #8 ..\KF32Lib\src\kf32a156_osc.c:341 } } 83c: e4 28 ADD SP, #4 83e: 1d 5c JMP LR 00000840 : OSC_LFCK_Source_Config(): ..\KF32Lib\src\kf32a156_osc.c:351 * LFCK_INPUT_INTLF: 选择INTLF作为LFCLK时钟, * LFCK_INPUT_EXTLF: 选择EXTLF作为LFCLK时钟。 * 返回 无。 */ void OSC_LFCK_Source_Config (uint32_t NewState) { 840: e4 30 SUB SP, #4 842: e0 85 ST.W [SP], R0 ..\KF32Lib\src\kf32a156_osc.c:356 /* 参数校验 */ CHECK_RESTRICTION(CHECK_LFCK_INPUT(NewState)); /*---------------- 设置OSC_CTL0寄存器LFCKS位 ----------------*/ if (NewState != LFCK_INPUT_INTLF) 844: 5e 82 LD.W R5, [SP] 846: 50 38 CMP R5, #0 848: 05 f0 JZ $+5 ;->0x852 ..\KF32Lib\src\kf32a156_osc.c:359 { /* 选择EXTLF作为LFCLK时钟 */ SFR_SET_BIT_ASM(OSC_CTL0, OSC_CTL0_LFCKS_POS); 84a: 51 10 MOV R5, #1 84c: ae 7b LSL R5, #30 84e: 2e 4c SET [R5], #6 850: 04 04 SJMP $+4 ;->0x858 ..\KF32Lib\src\kf32a156_osc.c:364 } else { /* 选择INTLF作为LFCLK时钟 */ SFR_CLR_BIT_ASM(OSC_CTL0, OSC_CTL0_LFCKS_POS); 852: 51 10 MOV R5, #1 854: ae 7b LSL R5, #30 856: 2e 4e CLR [R5], #6 ..\KF32Lib\src\kf32a156_osc.c:366 } } 858: e4 28 ADD SP, #4 85a: 1d 5c JMP LR 0000085c : OSC_LFCK_Enable(): ..\KF32Lib\src\kf32a156_osc.c:375 * 输入 NewState: 低频外设时钟允许使能状态, * 取值范围为:TRUE 或 FALSE。 * 返回 无。 */ void OSC_LFCK_Enable (FunctionalState NewState) { 85c: e4 30 SUB SP, #4 85e: e0 85 ST.W [SP], R0 ..\KF32Lib\src\kf32a156_osc.c:380 /* 参数校验 */ CHECK_RESTRICTION(CHECK_FUNCTIONAL_STATE(NewState)); /*---------------- 设置OSC_CTL0寄存器LFCKEN位 ----------------*/ if (NewState != FALSE) 860: 5e 82 LD.W R5, [SP] 862: 50 38 CMP R5, #0 864: 05 f0 JZ $+5 ;->0x86e ..\KF32Lib\src\kf32a156_osc.c:383 { /* LFCLK时钟信号允许 */ SFR_SET_BIT_ASM(OSC_CTL0, OSC_CTL0_LFCKEN_POS); 866: 51 10 MOV R5, #1 868: ae 7b LSL R5, #30 86a: 2c 4c SET [R5], #4 86c: 04 04 SJMP $+4 ;->0x874 ..\KF32Lib\src\kf32a156_osc.c:388 } else { /* LFCLK时钟信号禁止 */ SFR_CLR_BIT_ASM(OSC_CTL0, OSC_CTL0_LFCKEN_POS); 86e: 51 10 MOV R5, #1 870: ae 7b LSL R5, #30 872: 2c 4e CLR [R5], #4 ..\KF32Lib\src\kf32a156_osc.c:390 } } 874: e4 28 ADD SP, #4 876: 1d 5c JMP LR 00000878 : OSC_SCK_Source_Config(): ..\KF32Lib\src\kf32a156_osc.c:404 * SCLK_SOURCE_PLL: 选择PLL输出作为系统时钟, * SCLK_SOURCE_LP4M: 选择 LP4M 输出作为系统时钟 * 返回 无。 */ void OSC_SCK_Source_Config (uint32_t SclkSource) { 878: 81 5f PUSH {R6,LR} 87a: e8 30 SUB SP, #8 87c: 01 20 ST.W [SP + #1], R0 ..\KF32Lib\src\kf32a156_osc.c:411 /* 参数校验 */ CHECK_RESTRICTION(CHECK_SCLK_SOURCE(SclkSource)); /*---------------- 设置OSC_CTL0寄存器SCKS位 ----------------*/ tmpreg = SclkSource << OSC_CTL0_SCKS0_POS; 87e: 01 0d LD.W R5, [SP + #1] 880: 6d c3 ADD R5, R5, R5 882: e5 85 ST.W [SP], R5 ..\KF32Lib\src\kf32a156_osc.c:412 OSC_CTL0 = SFR_Config (OSC_CTL0, ~OSC_CTL0_SCKS, tmpreg); 884: 61 10 MOV R6, #1 886: b6 7b LSL R6, #30 888: 51 10 MOV R5, #1 88a: ae 7b LSL R5, #30 88c: 55 82 LD.W R5, [R5] 88e: 05 58 MOV R0, R5 890: 1e 10 MOV R1, #14 892: 11 68 NOT R1, R1 894: 2e 82 LD.W R2, [SP] 896: 05 45 LD R5, [PC + #5] ;->0x8a8 :=0x720 898: 05 5c LJMP R5 89a: a0 58 MOV R5, R0 89c: 65 85 ST.W [R6], R5 ..\KF32Lib\src\kf32a156_osc.c:413 } 89e: e8 28 ADD SP, #8 8a0: 06 5d POP R6 8a2: 0d 5d POP LR 8a4: 1d 5c JMP LR 8a6: 00 00 NOP NOP 8a8: 20 07 00 00 .long 0x00000720 ->000001824 [!!!@2@:SJMP $-224 ;->0x6e8 @@: NOP 000008ac : OSC_PLL_Multiple_Value_Select(): ..\KF32Lib\src\kf32a156_osc.c:591 * * 放大倍数=PLLmultiple_M/(PLLmultiple_N*PLLmultiple_NO) * 返回 无。 */ void OSC_PLL_Multiple_Value_Select (uint32_t PLLmultiple_M,uint32_t PLLmultiple_N,uint32_t PLLmultiple_NO) { 8ac: 81 5f PUSH {R6,LR} 8ae: e0 31 SUB SP, #16 8b0: 01 20 ST.W [SP + #1], R0 8b2: 02 21 ST.W [SP + #2], R1 8b4: 03 22 ST.W [SP + #3], R2 ..\KF32Lib\src\kf32a156_osc.c:599 /* 参数校验 */ CHECK_RESTRICTION(CHECK_PLL_MULTIPLE_MValue(PLLmultiple_M)); CHECK_RESTRICTION(CHECK_PLL_MULTIPLE_NValue(PLLmultiple_N)); CHECK_RESTRICTION(CHECK_PLL_MULTIPLE_NOValue(PLLmultiple_NO)); if(PLLmultiple_NO==8){PLLmultiple_NO=3;} 8b6: 03 0d LD.W R5, [SP + #3] 8b8: 58 38 CMP R5, #8 8ba: 04 f1 JNZ $+4 ;->0x8c2 8bc: 53 10 MOV R5, #3 8be: 03 25 ST.W [SP + #3], R5 8c0: 12 04 SJMP $+18 ;->0x8e4 ..\KF32Lib\src\kf32a156_osc.c:600 else if(PLLmultiple_NO==4){PLLmultiple_NO=2;} 8c2: 03 0d LD.W R5, [SP + #3] 8c4: 54 38 CMP R5, #4 8c6: 04 f1 JNZ $+4 ;->0x8ce 8c8: 52 10 MOV R5, #2 8ca: 03 25 ST.W [SP + #3], R5 8cc: 0c 04 SJMP $+12 ;->0x8e4 ..\KF32Lib\src\kf32a156_osc.c:601 else if(PLLmultiple_NO==2){PLLmultiple_NO=1;} 8ce: 03 0d LD.W R5, [SP + #3] 8d0: 52 38 CMP R5, #2 8d2: 04 f1 JNZ $+4 ;->0x8da 8d4: 51 10 MOV R5, #1 8d6: 03 25 ST.W [SP + #3], R5 8d8: 06 04 SJMP $+6 ;->0x8e4 ..\KF32Lib\src\kf32a156_osc.c:602 else if(PLLmultiple_NO==1){PLLmultiple_NO=0;} 8da: 03 0d LD.W R5, [SP + #3] 8dc: 51 38 CMP R5, #1 8de: 03 f1 JNZ $+3 ;->0x8e4 8e0: 50 10 MOV R5, #0 8e2: 03 25 ST.W [SP + #3], R5 ..\KF32Lib\src\kf32a156_osc.c:605 /*---------------- 设置PLL_CTL寄存器OD位N位M位 ----------------*/ tmpreg = ((PLLmultiple_M << PLL_CTL_M0_POS) \ 8e4: 01 0d LD.W R5, [SP + #1] 8e6: 32 10 MOV R3, #2 8e8: e5 da LSL R4, R5, R3 ..\KF32Lib\src\kf32a156_osc.c:606 | (PLLmultiple_N << PLL_CTL_N0_POS) \ 8ea: 02 0d LD.W R5, [SP + #2] 8ec: 28 7b LSL R5, #16 8ee: 64 d7 ORL R4, R4, R5 ..\KF32Lib\src\kf32a156_osc.c:607 | (PLLmultiple_NO << PLL_CTL_OD0_POS)); 8f0: 03 0d LD.W R5, [SP + #3] 8f2: 2c 7b LSL R5, #20 ..\KF32Lib\src\kf32a156_osc.c:605 else if(PLLmultiple_NO==4){PLLmultiple_NO=2;} else if(PLLmultiple_NO==2){PLLmultiple_NO=1;} else if(PLLmultiple_NO==1){PLLmultiple_NO=0;} /*---------------- 设置PLL_CTL寄存器OD位N位M位 ----------------*/ tmpreg = ((PLLmultiple_M << PLL_CTL_M0_POS) \ 8f4: 6c d7 ORL R5, R4, R5 8f6: e5 85 ST.W [SP], R5 ..\KF32Lib\src\kf32a156_osc.c:609 | (PLLmultiple_N << PLL_CTL_N0_POS) \ | (PLLmultiple_NO << PLL_CTL_OD0_POS)); PLL_CTL = SFR_Config (PLL_CTL, ~(PLL_CTL_M | PLL_CTL_N | PLL_CTL_OD), tmpreg); 8f8: 07 46 LD R6, [PC + #7] ;->0x914 :=0x40002580 8fa: 07 45 LD R5, [PC + #7] ;->0x914 :=0x40002580 8fc: 55 82 LD.W R5, [R5] 8fe: 05 58 MOV R0, R5 900: 06 41 LD R1, [PC + #6] ;->0x918 :=0xffc00003 902: 2e 82 LD.W R2, [SP] 904: 06 45 LD R5, [PC + #6] ;->0x91c :=0x720 906: 05 5c LJMP R5 908: a0 58 MOV R5, R0 90a: 65 85 ST.W [R6], R5 ..\KF32Lib\src\kf32a156_osc.c:610 } 90c: e0 29 ADD SP, #16 90e: 06 5d POP R6 910: 0d 5d POP LR 912: 1d 5c JMP LR 914: 80 25 00 40 .long 0x40002580 ->1073751424 [!!!@2@:ST.W [SP + #128], R5 @@: LD R0, [PC + #0] ;->0x914 :=0x40002580 918: 03 00 c0 ff .long 0xffc00003 ->-04194301 91c: 20 07 00 00 .long 0x00000720 ->000001824 [!!!@2@:SJMP $-224 ;->0x75c @@: NOP 00000920 : OSC_PLL_RST(): ..\KF32Lib\src\kf32a156_osc.c:620 * 返回 :无 */ void OSC_PLL_RST(void) { /*---------------- 设置PLL_CTL寄存器PDRST位 ----------------*/ SFR_SET_BIT_ASM(PLL_CTL, PLL_CTL_PDRST_POS); 920: 02 45 LD R5, [PC + #2] ;->0x928 :=0x40002580 922: 28 4c SET [R5], #0 ..\KF32Lib\src\kf32a156_osc.c:621 } 924: 1d 5c JMP LR 926: 00 00 NOP NOP 928: 80 25 00 40 .long 0x40002580 ->1073751424 [!!!@2@:ST.W [SP + #128], R5 @@: LD R0, [PC + #0] ;->0x928 :=0x40002580 0000092c : OSC_PLL_Start_Delay_Config(): ..\KF32Lib\src\kf32a156_osc.c:639 * PLL_START_DELAY_16384: 延迟16384个时钟 * PLL_START_DELAY_32768: 延迟32768个时钟 * 返回 无。 */ void OSC_PLL_Start_Delay_Config (uint32_t PLLDelay) { 92c: 81 5f PUSH {R6,LR} 92e: e8 30 SUB SP, #8 930: 01 20 ST.W [SP + #1], R0 ..\KF32Lib\src\kf32a156_osc.c:646 /* 参数校验 */ CHECK_RESTRICTION(CHECK_PLL_START_DELAY(PLLDelay)); /*---------------- 设置OSC_CTL2寄存器PLLDLY位 ----------------*/ tmpreg = PLLDelay << OSC_CTL2_PLLDLY0_POS; 932: 01 0d LD.W R5, [SP + #1] 934: a8 7b LSL R5, #24 936: e5 85 ST.W [SP], R5 ..\KF32Lib\src\kf32a156_osc.c:647 OSC_CTL2 = SFR_Config (OSC_CTL2, ~OSC_CTL2_PLLDLY, tmpreg); 938: 61 10 MOV R6, #1 93a: b6 7b LSL R6, #30 93c: 51 10 MOV R5, #1 93e: ae 7b LSL R5, #30 940: ed 98 LD.W R5, [R5 + #3] 942: 05 58 MOV R0, R5 944: 05 41 LD R1, [PC + #5] ;->0x958 :=0xf0ffffff 946: 2e 82 LD.W R2, [SP] 948: 05 45 LD R5, [PC + #5] ;->0x95c :=0x720 94a: 05 5c LJMP R5 94c: a0 58 MOV R5, R0 94e: f5 a0 ST.W [R6 + #3], R5 ..\KF32Lib\src\kf32a156_osc.c:648 } 950: e8 28 ADD SP, #8 952: 06 5d POP R6 954: 0d 5d POP LR 956: 1d 5c JMP LR 958: ff ff ff f0 .long 0xf0ffffff ->-251658241 95c: 20 07 00 00 .long 0x00000720 ->000001824 [!!!@2@:SJMP $-224 ;->0x79c @@: NOP 00000960 : OSC_PLL_Software_Enable(): ..\KF32Lib\src\kf32a156_osc.c:733 * 描述 配置PLL软件使能。 * 输入 NewState: PLL软件使能状态,取值范围为:TRUE 或 FALSE。 * 返回 无。 */ void OSC_PLL_Software_Enable (FunctionalState NewState) { 960: e4 30 SUB SP, #4 962: e0 85 ST.W [SP], R0 ..\KF32Lib\src\kf32a156_osc.c:738 /* 参数校验 */ CHECK_RESTRICTION(CHECK_FUNCTIONAL_STATE(NewState)); /*---------------- 设置OSC_CTL2寄存器PLLSWEN位 ----------------*/ if (NewState != FALSE) 964: 5e 82 LD.W R5, [SP] 966: 50 38 CMP R5, #0 968: 04 f0 JZ $+4 ;->0x970 ..\KF32Lib\src\kf32a156_osc.c:741 { /* 使能PLL工作 */ SFR_SET_BIT_ASM(OSC_CTL2, OSC_CTL2_PLLSWEN_POS); 96a: 04 45 LD R5, [PC + #4] ;->0x978 :=0x4000000c 96c: 2c 4c SET [R5], #4 96e: 03 04 SJMP $+3 ;->0x974 ..\KF32Lib\src\kf32a156_osc.c:746 } else { /* 无效 */ SFR_CLR_BIT_ASM(OSC_CTL2, OSC_CTL2_PLLSWEN_POS); 970: 02 45 LD R5, [PC + #2] ;->0x978 :=0x4000000c 972: 2c 4e CLR [R5], #4 ..\KF32Lib\src\kf32a156_osc.c:748 } } 974: e4 28 ADD SP, #4 976: 1d 5c JMP LR 978: 0c 00 00 40 .long 0x4000000c ->1073741836 0000097c : OSC_INTHF_Software_Enable(): ..\KF32Lib\src\kf32a156_osc.c:802 * 描述 配置内部高频振荡器软件使能。 * 输入 NewState: 内部高频振荡器软件使能状态,取值范围为:TRUE 或 FALSE。 * 返回 无。 */ void OSC_INTHF_Software_Enable (FunctionalState NewState) { 97c: e4 30 SUB SP, #4 97e: e0 85 ST.W [SP], R0 ..\KF32Lib\src\kf32a156_osc.c:807 /* 参数校验 */ CHECK_RESTRICTION(CHECK_FUNCTIONAL_STATE(NewState)); /*---------------- 设置OSC_CTL2寄存器INTHFSWEN位 ----------------*/ if (NewState != FALSE) 980: 5e 82 LD.W R5, [SP] 982: 50 38 CMP R5, #0 984: 04 f0 JZ $+4 ;->0x98c ..\KF32Lib\src\kf32a156_osc.c:810 { /* 使能内部高频振荡器工作 */ SFR_SET_BIT_ASM(OSC_CTL2, OSC_CTL2_INTHFSWEN_POS); 986: 04 45 LD R5, [PC + #4] ;->0x994 :=0x4000000c 988: 29 4c SET [R5], #1 98a: 03 04 SJMP $+3 ;->0x990 ..\KF32Lib\src\kf32a156_osc.c:815 } else { /* 无效 */ SFR_CLR_BIT_ASM(OSC_CTL2, OSC_CTL2_INTHFSWEN_POS); 98c: 02 45 LD R5, [PC + #2] ;->0x994 :=0x4000000c 98e: 29 4e CLR [R5], #1 ..\KF32Lib\src\kf32a156_osc.c:817 } } 990: e4 28 ADD SP, #4 992: 1d 5c JMP LR 994: 0c 00 00 40 .long 0x4000000c ->1073741836 00000998 : OSC_INTLF_Software_Enable(): ..\KF32Lib\src\kf32a156_osc.c:825 * 描述 配置内部低频振荡器软件使能。 * 输入 NewState: 内部低频振荡器软件使能状态,取值范围为:TRUE 或 FALSE。 * 返回 无。 */ void OSC_INTLF_Software_Enable (FunctionalState NewState) { 998: e4 30 SUB SP, #4 99a: e0 85 ST.W [SP], R0 ..\KF32Lib\src\kf32a156_osc.c:830 /* 参数校验 */ CHECK_RESTRICTION(CHECK_FUNCTIONAL_STATE(NewState)); /*---------------- 设置OSC_CTL2寄存器INTLFSWEN位 ----------------*/ if (NewState != FALSE) 99c: 5e 82 LD.W R5, [SP] 99e: 50 38 CMP R5, #0 9a0: 04 f0 JZ $+4 ;->0x9a8 ..\KF32Lib\src\kf32a156_osc.c:833 { /* 使能内部低频振荡器工作 */ SFR_SET_BIT_ASM(OSC_CTL2, OSC_CTL2_INTLFSWEN_POS); 9a2: 04 45 LD R5, [PC + #4] ;->0x9b0 :=0x4000000c 9a4: 28 4c SET [R5], #0 9a6: 03 04 SJMP $+3 ;->0x9ac ..\KF32Lib\src\kf32a156_osc.c:838 } else { /* 无效 */ SFR_CLR_BIT_ASM(OSC_CTL2, OSC_CTL2_INTLFSWEN_POS); 9a8: 02 45 LD R5, [PC + #2] ;->0x9b0 :=0x4000000c 9aa: 28 4e CLR [R5], #0 ..\KF32Lib\src\kf32a156_osc.c:840 } } 9ac: e4 28 ADD SP, #4 9ae: 1d 5c JMP LR 9b0: 0c 00 00 40 .long 0x4000000c ->1073741836 000009b4 : OSC_Get_PLL_INT_Flag(): ..\KF32Lib\src\kf32a156_osc.c:1194 * 返回 中断状态,0:未发生中断,1:发生中断。 */ FlagStatus OSC_Get_PLL_INT_Flag (void) { /*---------------- 设置OSC_INT寄存器PLLIF位 ----------------*/ if (OSC_INT & OSC_INT_PLLIF) 9b4: 51 10 MOV R5, #1 9b6: ae 7b LSL R5, #30 9b8: a5 98 LD.W R4, [R5 + #2] 9ba: 50 11 MOV R5, #16 9bc: 6c d5 ANL R5, R4, R5 9be: 50 38 CMP R5, #0 9c0: 03 f0 JZ $+3 ;->0x9c6 ..\KF32Lib\src\kf32a156_osc.c:1197 { /* PLL锁定 */ return SET; 9c2: 51 10 MOV R5, #1 9c4: 02 04 SJMP $+2 ;->0x9c8 ..\KF32Lib\src\kf32a156_osc.c:1202 } else { /* PLL未锁定 */ return RESET; 9c6: 50 10 MOV R5, #0 ..\KF32Lib\src\kf32a156_osc.c:1204 } } 9c8: 05 58 MOV R0, R5 9ca: 1d 5c JMP LR 000009cc : OSC_Get_INTHF_INT_Flag(): ..\KF32Lib\src\kf32a156_osc.c:1254 * 返回 中断状态,0:未发生中断,1:发生中断。 */ FlagStatus OSC_Get_INTHF_INT_Flag (void) { /*---------------- 设置OSC_INT寄存器IHFIF位 ----------------*/ if (OSC_INT & OSC_INT_IHFIF) 9cc: 51 10 MOV R5, #1 9ce: ae 7b LSL R5, #30 9d0: a5 98 LD.W R4, [R5 + #2] 9d2: 52 10 MOV R5, #2 9d4: 6c d5 ANL R5, R4, R5 9d6: 50 38 CMP R5, #0 9d8: 03 f0 JZ $+3 ;->0x9de ..\KF32Lib\src\kf32a156_osc.c:1257 { /* PLL锁定 */ return SET; 9da: 51 10 MOV R5, #1 9dc: 02 04 SJMP $+2 ;->0x9e0 ..\KF32Lib\src\kf32a156_osc.c:1262 } else { /* PLL未锁定 */ return RESET; 9de: 50 10 MOV R5, #0 ..\KF32Lib\src\kf32a156_osc.c:1264 } } 9e0: 05 58 MOV R0, R5 9e2: 1d 5c JMP LR 000009e4 : SYSTICK_Cmd(): ..\KF32Lib\src\kf32a156_systick.c:110 * 输入 NewState: 节拍定时器使能控制, * 取值范围为:TRUE 或 FALSE。 * 返回 无 */ void SYSTICK_Cmd (FunctionalState NewState) { 9e4: e4 30 SUB SP, #4 9e6: e0 85 ST.W [SP], R0 ..\KF32Lib\src\kf32a156_systick.c:115 /* 参数校验 */ CHECK_RESTRICTION(CHECK_FUNCTIONAL_STATE(NewState)); /*---------------- 设置ST_CTL寄存器STEN位 ----------------*/ if (NewState != FALSE) 9e8: 5e 82 LD.W R5, [SP] 9ea: 50 38 CMP R5, #0 9ec: 04 f0 JZ $+4 ;->0x9f4 ..\KF32Lib\src\kf32a156_systick.c:118 { /* 使能系统节拍定时器 */ SFR_SET_BIT_ASM(ST_CTL, ST_CTL_STEN_POS); 9ee: 04 45 LD R5, [PC + #4] ;->0x9fc :=0x402000a0 9f0: 28 4c SET [R5], #0 9f2: 03 04 SJMP $+3 ;->0x9f8 ..\KF32Lib\src\kf32a156_systick.c:123 } else { /* 禁止系统节拍定时器 */ SFR_CLR_BIT_ASM(ST_CTL, ST_CTL_STEN_POS); 9f4: 02 45 LD R5, [PC + #2] ;->0x9fc :=0x402000a0 9f6: 28 4e CLR [R5], #0 ..\KF32Lib\src\kf32a156_systick.c:125 } } 9f8: e4 28 ADD SP, #4 9fa: 1d 5c JMP LR 9fc: a0 00 20 40 .long 0x402000a0 ->1075839136 [!!!@4@:DO #16, $+32 ;->0xa3c 00000a00 : SYSTICK_Clock_Config(): ..\KF32Lib\src\kf32a156_systick.c:137 * SYSTICK_SYS_CLOCK_DIV_2: SCLK/2作为时钟 * 返回 无 * 注:如果ST_CALI寄存器的STCLKREF位为1,SYSTICK配置SCLK/2作为时钟是配置不成功的 */ void SYSTICK_Clock_Config (uint32_t SysClock) { a00: e4 30 SUB SP, #4 a02: e0 85 ST.W [SP], R0 ..\KF32Lib\src\kf32a156_systick.c:142 /* 参数校验 */ CHECK_RESTRICTION(CHECK_SYSTICK_CLOCK(SysClock)); /*---------------- 设置ST_CTL寄存器STCLKS位 ----------------*/ if (SysClock != SYSTICK_SYS_CLOCK_DIV_2) a04: 5e 82 LD.W R5, [SP] a06: 50 38 CMP R5, #0 a08: 04 f0 JZ $+4 ;->0xa10 ..\KF32Lib\src\kf32a156_systick.c:145 { /* 选择SCLK作为时钟 */ SFR_SET_BIT_ASM(ST_CTL, ST_CTL_STCLKS_POS); a0a: 04 45 LD R5, [PC + #4] ;->0xa18 :=0x402000a0 a0c: 2a 4c SET [R5], #2 a0e: 03 04 SJMP $+3 ;->0xa14 ..\KF32Lib\src\kf32a156_systick.c:150 } else { /* 选择SCLK/2作为时钟 */ SFR_CLR_BIT_ASM(ST_CTL, ST_CTL_STCLKS_POS); a10: 02 45 LD R5, [PC + #2] ;->0xa18 :=0x402000a0 a12: 2a 4e CLR [R5], #2 ..\KF32Lib\src\kf32a156_systick.c:152 } } a14: e4 28 ADD SP, #4 a16: 1d 5c JMP LR a18: a0 00 20 40 .long 0x402000a0 ->1075839136 [!!!@4@:DO #16, $+32 ;->0xa58 00000a1c : SYSTICK_Systick_INT_Enable(): ..\KF32Lib\src\kf32a156_systick.c:161 * 输入 SysClock: 系统节拍定时器SysTick中断使能状态, * 取值范围为:TRUE 或 FALSE。 * 返回 无 */ void SYSTICK_Systick_INT_Enable (uint32_t SysClock) { a1c: e4 30 SUB SP, #4 a1e: e0 85 ST.W [SP], R0 ..\KF32Lib\src\kf32a156_systick.c:166 /* 参数校验 */ CHECK_RESTRICTION(CHECK_FUNCTIONAL_STATE(SysClock)); /*---------------- 设置ST_CTL寄存器TICKINTEN位 ----------------*/ if (SysClock != FALSE) a20: 5e 82 LD.W R5, [SP] a22: 50 38 CMP R5, #0 a24: 04 f0 JZ $+4 ;->0xa2c ..\KF32Lib\src\kf32a156_systick.c:169 { /* 计数到0发送SysTick中断请求 */ SFR_SET_BIT_ASM(ST_CTL, ST_CTL_TICKINTEN_POS); a26: 04 45 LD R5, [PC + #4] ;->0xa34 :=0x402000a0 a28: 29 4c SET [R5], #1 a2a: 03 04 SJMP $+3 ;->0xa30 ..\KF32Lib\src\kf32a156_systick.c:174 } else { /* 计数到0不发送SysTick中断请求 */ SFR_CLR_BIT_ASM(ST_CTL, ST_CTL_TICKINTEN_POS); a2c: 02 45 LD R5, [PC + #2] ;->0xa34 :=0x402000a0 a2e: 29 4e CLR [R5], #1 ..\KF32Lib\src\kf32a156_systick.c:176 } } a30: e4 28 ADD SP, #4 a32: 1d 5c JMP LR a34: a0 00 20 40 .long 0x402000a0 ->1075839136 [!!!@4@:DO #16, $+32 ;->0xa74 00000a38 : SYSTICK_Reload_Config(): ..\KF32Lib\src\kf32a156_systick.c:205 * 输入 Reload: 系统节拍定时器重加载值,节拍定时器的周期值为重加载值加1。 * 取值为24位数据。 * 返回 无 */ void SYSTICK_Reload_Config (uint32_t Reload) { a38: e4 30 SUB SP, #4 a3a: e0 85 ST.W [SP], R0 ..\KF32Lib\src\kf32a156_systick.c:210 /* 参数校验 */ CHECK_RESTRICTION(CHECK_SYSTICK_RELOAD(Reload)); /*--------------- 设置ST_RELOAD寄存器 ---------------*/ ST_RELOAD = Reload; a3c: 03 45 LD R5, [PC + #3] ;->0xa48 :=0x402000a0 a3e: 4e 82 LD.W R4, [SP] a40: 6c a0 ST.W [R5 + #1], R4 ..\KF32Lib\src\kf32a156_systick.c:211 } a42: e4 28 ADD SP, #4 a44: 1d 5c JMP LR a46: 00 00 NOP NOP a48: a0 00 20 40 .long 0x402000a0 ->1075839136 [!!!@4@:DO #16, $+32 ;->0xa88 00000a4c : SYSTICK_Counter_Updata(): ..\KF32Lib\src\kf32a156_systick.c:223 */ void SYSTICK_Counter_Updata (void) { /*-- 向ST_CV寄存器写任意值,以清零当前值寄存器, 并清零COUNTZERO标志位,确保重载值能加载到当前值寄存器中 --*/ ST_CV = 0; a4c: 02 45 LD R5, [PC + #2] ;->0xa54 :=0x402000a0 a4e: 40 10 MOV R4, #0 a50: ac a0 ST.W [R5 + #2], R4 ..\KF32Lib\src\kf32a156_systick.c:224 } a52: 1d 5c JMP LR a54: a0 00 20 40 .long 0x402000a0 ->1075839136 [!!!@4@:DO #16, $+32 ;->0xa94 00000a58 : SetSysClock(): ..\KF32Lib\system_init.c:105 * @param[in] SCLK_Value System master clock frequency,MHZ * @param[out] None * @retval :None */ static void SetSysClock(uint8_t SCLK_Value) { a58: 2d 5d PUSH LR a5a: e8 30 SUB SP, #8 a5c: a0 58 MOV R5, R0 a5e: a4 e3 ST.B [SP + #4], R5 ..\KF32Lib\system_init.c:113 * ****************************************************************************** * Enable INTHF & INTLF,and set the INTHF as the SCLK. * Wait till INTHF is ready and if Time out is reached exit. * ****************************************************************************** */ OSC_INTLF_Software_Enable(TRUE); a60: 01 10 MOV R0, #1 a62: 47 45 LD R5, [PC + #71] ;->0xb7c :=0x998 a64: 05 5c LJMP R5 ..\KF32Lib\system_init.c:114 OSC_INTHF_Software_Enable(TRUE); a66: 01 10 MOV R0, #1 a68: 46 45 LD R5, [PC + #70] ;->0xb80 :=0x97c a6a: 05 5c LJMP R5 ..\KF32Lib\system_init.c:115 FLASH_CFG = 0xC7; a6c: 46 45 LD R5, [PC + #70] ;->0xb84 :=0x40200100 a6e: 47 1c MOV R4, #199 a70: 6c a1 ST.W [R5 + #5], R4 ..\KF32Lib\system_init.c:117 /* Set the INTHF as the SCLK DIV<1:1> */ OSC_SCK_Division_Config(SCLK_DIVISION_1); a72: 00 10 MOV R0, #0 a74: 45 45 LD R5, [PC + #69] ;->0xb88 :=0x7a0 a76: 05 5c LJMP R5 ..\KF32Lib\system_init.c:118 OSC_SCK_Source_Config(SCLK_SOURCE_INTHF); a78: 00 10 MOV R0, #0 a7a: 45 45 LD R5, [PC + #69] ;->0xb8c :=0x878 a7c: 05 5c LJMP R5 ..\KF32Lib\system_init.c:119 StartUpCounter = HSI_STARTUP_TIMEOUT; a7e: 50 17 MOV R5, #112 a80: e5 85 ST.W [SP], R5 ..\KF32Lib\system_init.c:120 while (--StartUpCounter) a82: 00 00 NOP NOP a84: 5e 82 LD.W R5, [SP] a86: 6d cc SUB R5, R5, #1 a88: e5 85 ST.W [SP], R5 a8a: 50 38 CMP R5, #0 a8c: fc f1 JNZ $-4 ;->0xa84 ..\KF32Lib\system_init.c:122 ; while (OSC_Get_INTHF_INT_Flag() != SET) a8e: 00 00 NOP NOP a90: 40 45 LD R5, [PC + #64] ;->0xb90 :=0x9cc a92: 05 5c LJMP R5 a94: a0 58 MOV R5, R0 a96: 51 38 CMP R5, #1 a98: fc f1 JNZ $-4 ;->0xa90 ..\KF32Lib\system_init.c:133 * If an external clock source is used, must be wait till EXTHF is ready and if * Time out is reached exit. * ****************************************************************************** */ #ifdef SYSCLK_FREQ_HSI OSC_PLL_Input_Source_Config(PLL_INPUT_INTHF); a9a: 00 10 MOV R0, #0 a9c: 3e 45 LD R5, [PC + #62] ;->0xb94 :=0x7d4 a9e: 05 5c LJMP R5 ..\KF32Lib\system_init.c:174 * Enable HFCLK and if EXTHF is invalid configure the HFCLK default clock source * is HSI. * Enable LFCLK and if configure the LFCLK default clock source is LSI. * ****************************************************************************** */ if ((SCLK_Value >= 25) && (SCLK_Value <= 120)) aa0: a4 e1 LD.B R5, [SP + #4] aa2: 58 39 CMP R5, #24 aa4: 51 f9 JLS $+81 ;->0xb46 aa6: a4 e1 LD.B R5, [SP + #4] aa8: 58 3f CMP R5, #120 aaa: 4e f8 JHI $+78 ;->0xb46 ..\KF32Lib\system_init.c:177 { OSC_PLL_Multiple_Value_Select( PLL_Value_Select[SCLK_Value - 25][0], PLL_Value_Select[SCLK_Value - 25][1], aac: a4 e1 LD.B R5, [SP + #4] aae: 19 11 MOV R1, #25 ab0: 65 c6 SUB R4, R5, R1 ab2: 3a 43 LD R3, [PC + #58] ;->0xb98 :=0xd44 ab4: 53 10 MOV R5, #3 ab6: 6c cb MULS R5, R4, R5 ab8: 00 00 NOP NOP aba: 6b c3 ADD R5, R3, R5 abc: 55 80 LD.B R5, [R5] ..\KF32Lib\system_init.c:176 * Enable LFCLK and if configure the LFCLK default clock source is LSI. * ****************************************************************************** */ if ((SCLK_Value >= 25) && (SCLK_Value <= 120)) { OSC_PLL_Multiple_Value_Select( abe: 65 58 MOV R3, R5 ..\KF32Lib\system_init.c:177 PLL_Value_Select[SCLK_Value - 25][0], PLL_Value_Select[SCLK_Value - 25][1], ac0: a4 e1 LD.B R5, [SP + #4] ac2: 29 11 MOV R2, #25 ac4: a5 c6 SUB R4, R5, R2 ac6: 35 42 LD R2, [PC + #53] ;->0xb98 :=0xd44 ac8: 53 10 MOV R5, #3 aca: 6c cb MULS R5, R4, R5 acc: 00 00 NOP NOP ace: 6a c3 ADD R5, R2, R5 ad0: 6d c0 ADD R5, R5, #1 ad2: 55 80 LD.B R5, [R5] ..\KF32Lib\system_init.c:176 * Enable LFCLK and if configure the LFCLK default clock source is LSI. * ****************************************************************************** */ if ((SCLK_Value >= 25) && (SCLK_Value <= 120)) { OSC_PLL_Multiple_Value_Select( ad4: 85 58 MOV R4, R5 ..\KF32Lib\system_init.c:178 PLL_Value_Select[SCLK_Value - 25][0], PLL_Value_Select[SCLK_Value - 25][1], PLL_Value_Select[SCLK_Value - 25][2]); ad6: a4 e1 LD.B R5, [SP + #4] ad8: 19 11 MOV R1, #25 ada: 55 c6 SUB R2, R5, R1 adc: 2f 41 LD R1, [PC + #47] ;->0xb98 :=0xd44 ade: 53 10 MOV R5, #3 ae0: 6a cb MULS R5, R2, R5 ae2: 00 00 NOP NOP ae4: 69 c3 ADD R5, R1, R5 ae6: ad c0 ADD R5, R5, #2 ae8: 55 80 LD.B R5, [R5] ..\KF32Lib\system_init.c:176 * Enable LFCLK and if configure the LFCLK default clock source is LSI. * ****************************************************************************** */ if ((SCLK_Value >= 25) && (SCLK_Value <= 120)) { OSC_PLL_Multiple_Value_Select( aea: 03 58 MOV R0, R3 aec: 24 58 MOV R1, R4 aee: 45 58 MOV R2, R5 af0: 2b 45 LD R5, [PC + #43] ;->0xb9c :=0x8ac af2: 05 5c LJMP R5 ..\KF32Lib\system_init.c:180 PLL_Value_Select[SCLK_Value - 25][0], PLL_Value_Select[SCLK_Value - 25][1], PLL_Value_Select[SCLK_Value - 25][2]); #ifdef SYSCLK_FREQ_HSI OSC_PLL_Start_Delay_Config(PLL_START_DELAY_8192); af4: 07 10 MOV R0, #7 af6: 2b 45 LD R5, [PC + #43] ;->0xba0 :=0x92c af8: 05 5c LJMP R5 ..\KF32Lib\system_init.c:190 OSC_PLL_Start_Delay_Config(PLL_START_DELAY_8192); #else OSC_PLL_Start_Delay_Config(PLL_START_DELAY_16384); #endif #endif OSC_PLL_Software_Enable(TRUE); afa: 01 10 MOV R0, #1 afc: 2a 45 LD R5, [PC + #42] ;->0xba4 :=0x960 afe: 05 5c LJMP R5 ..\KF32Lib\system_init.c:191 OSC_PLL_RST(); b00: 2a 45 LD R5, [PC + #42] ;->0xba8 :=0x920 b02: 05 5c LJMP R5 ..\KF32Lib\system_init.c:192 while (OSC_Get_PLL_INT_Flag() != SET) b04: 00 00 NOP NOP b06: 2a 45 LD R5, [PC + #42] ;->0xbac :=0x9b4 b08: 05 5c LJMP R5 b0a: a0 58 MOV R5, R0 b0c: 51 38 CMP R5, #1 b0e: fc f1 JNZ $-4 ;->0xb06 ..\KF32Lib\system_init.c:194 ; if (SCLK_Value <= 48) b10: a4 e1 LD.B R5, [SP + #4] b12: 50 3b CMP R5, #48 b14: 05 f8 JHI $+5 ;->0xb1e ..\KF32Lib\system_init.c:195 FLASH_CFG = 0xC2; b16: 1c 45 LD R5, [PC + #28] ;->0xb84 :=0x40200100 b18: 42 1c MOV R4, #194 b1a: 6c a1 ST.W [R5 + #5], R4 b1c: 0e 04 SJMP $+14 ;->0xb38 ..\KF32Lib\system_init.c:196 else if (SCLK_Value <= 96) b1e: a4 e1 LD.B R5, [SP + #4] b20: 50 3e CMP R5, #96 b22: 05 f8 JHI $+5 ;->0xb2c ..\KF32Lib\system_init.c:197 FLASH_CFG = 0xC4; b24: 18 45 LD R5, [PC + #24] ;->0xb84 :=0x40200100 b26: 44 1c MOV R4, #196 b28: 6c a1 ST.W [R5 + #5], R4 b2a: 07 04 SJMP $+7 ;->0xb38 ..\KF32Lib\system_init.c:198 else if (SCLK_Value <= 120) b2c: a4 e1 LD.B R5, [SP + #4] b2e: 58 3f CMP R5, #120 b30: 04 f8 JHI $+4 ;->0xb38 ..\KF32Lib\system_init.c:199 FLASH_CFG = 0xC5; b32: 15 45 LD R5, [PC + #21] ;->0xb84 :=0x40200100 b34: 45 1c MOV R4, #197 b36: 6c a1 ST.W [R5 + #5], R4 ..\KF32Lib\system_init.c:201 /* Configure the System clock source is PLL */ OSC_SCK_Division_Config(SCLK_DIVISION_1); b38: 00 10 MOV R0, #0 b3a: 14 45 LD R5, [PC + #20] ;->0xb88 :=0x7a0 b3c: 05 5c LJMP R5 ..\KF32Lib\system_init.c:202 OSC_SCK_Source_Config(SCLK_SOURCE_PLL); b3e: 04 10 MOV R0, #4 b40: 13 45 LD R5, [PC + #19] ;->0xb8c :=0x878 b42: 05 5c LJMP R5 b44: 07 04 SJMP $+7 ;->0xb52 ..\KF32Lib\system_init.c:206 } else { OSC_SCK_Division_Config(SCLK_DIVISION_1); b46: 00 10 MOV R0, #0 b48: 10 45 LD R5, [PC + #16] ;->0xb88 :=0x7a0 b4a: 05 5c LJMP R5 ..\KF32Lib\system_init.c:208 #ifdef SYSCLK_FREQ_HSI OSC_SCK_Source_Config(SCLK_SOURCE_INTHF); b4c: 00 10 MOV R0, #0 b4e: 10 45 LD R5, [PC + #16] ;->0xb8c :=0x878 b50: 05 5c LJMP R5 ..\KF32Lib\system_init.c:214 #else OSC_SCK_Source_Config(SCLK_SOURCE_EXTHF); #endif } /* Enable HFCLK and if EXTHF is invalid configure the HFCLK default clock source is HSI DIV<1:1> */ OSC_HFCK_Division_Config(HFCK_DIVISION_1); b52: 00 10 MOV R0, #0 b54: 17 45 LD R5, [PC + #23] ;->0xbb0 :=0x76c b56: 05 5c LJMP R5 ..\KF32Lib\system_init.c:216 #ifdef SYSCLK_FREQ_HSI OSC_HFCK_Source_Config(HFCK_SOURCE_INTHF); b58: 00 10 MOV R0, #0 b5a: 17 45 LD R5, [PC + #23] ;->0xbb4 :=0x7f0 b5c: 05 5c LJMP R5 ..\KF32Lib\system_init.c:220 #else OSC_HFCK_Source_Config(HFCK_SOURCE_EXTHF); #endif OSC_HFCK_Enable(TRUE); b5e: 01 10 MOV R0, #1 b60: 16 45 LD R5, [PC + #22] ;->0xbb8 :=0x824 b62: 05 5c LJMP R5 ..\KF32Lib\system_init.c:222 /* Enable LFCLK and if configure the LFCLK default clock source is LSI DIV<1:1> */ OSC_LFCK_Division_Config(LFCK_DIVISION_1); b64: 00 10 MOV R0, #0 b66: 16 45 LD R5, [PC + #22] ;->0xbbc :=0x738 b68: 05 5c LJMP R5 ..\KF32Lib\system_init.c:223 OSC_LFCK_Source_Config(LFCK_INPUT_INTLF); b6a: 00 10 MOV R0, #0 b6c: 15 45 LD R5, [PC + #21] ;->0xbc0 :=0x840 b6e: 05 5c LJMP R5 ..\KF32Lib\system_init.c:224 OSC_LFCK_Enable(TRUE); b70: 01 10 MOV R0, #1 b72: 15 45 LD R5, [PC + #21] ;->0xbc4 :=0x85c b74: 05 5c LJMP R5 ..\KF32Lib\system_init.c:225 } b76: e8 28 ADD SP, #8 b78: 0d 5d POP LR b7a: 1d 5c JMP LR b7c: 98 09 00 00 .long 0x00000998 ->000002456 [!!!@2@:LD.W R1, [SP + #152] @@: NOP b80: 7c 09 00 00 .long 0x0000097c ->000002428 [!!!@2@:LD.W R1, [SP + #124] @@: NOP b84: 00 01 20 40 .long 0x40200100 ->1075839232 [!!!@2@:CMN R0, R0 @@: LD R0, [PC + #32] ;->0xc04 :=0xf9037054 b88: a0 07 00 00 .long 0x000007a0 ->000001952 [!!!@2@:SJMP $-96 ;->0xac8 @@: NOP b8c: 78 08 00 00 .long 0x00000878 ->000002168 [!!!@2@:LD.W R0, [SP + #120] @@: NOP b90: cc 09 00 00 .long 0x000009cc ->000002508 [!!!@2@:LD.W R1, [SP + #204] @@: NOP b94: d4 07 00 00 .long 0x000007d4 ->000002004 [!!!@2@:SJMP $-44 ;->0xb3c @@: NOP b98: 44 0d 00 00 .long 0x00000d44 ->000003396 [!!!@2@:LD.W R5, [SP + #68] @@: NOP b9c: ac 08 00 00 .long 0x000008ac ->000002220 [!!!@2@:LD.W R0, [SP + #172] @@: NOP ba0: 2c 09 00 00 .long 0x0000092c ->000002348 [!!!@2@:LD.W R1, [SP + #44] @@: NOP ba4: 60 09 00 00 .long 0x00000960 ->000002400 [!!!@2@:LD.W R1, [SP + #96] @@: NOP ba8: 20 09 00 00 .long 0x00000920 ->000002336 [!!!@2@:LD.W R1, [SP + #32] @@: NOP bac: b4 09 00 00 .long 0x000009b4 ->000002484 [!!!@2@:LD.W R1, [SP + #180] @@: NOP bb0: 6c 07 00 00 .long 0x0000076c ->000001900 [!!!@2@:SJMP $-148 ;->0xa88 @@: NOP bb4: f0 07 00 00 .long 0x000007f0 ->000002032 [!!!@2@:SJMP $-16 ;->0xb94 @@: NOP bb8: 24 08 00 00 .long 0x00000824 ->000002084 [!!!@2@:LD.W R0, [SP + #36] @@: NOP bbc: 38 07 00 00 .long 0x00000738 ->000001848 [!!!@2@:SJMP $-200 ;->0xa2c @@: NOP bc0: 40 08 00 00 .long 0x00000840 ->000002112 [!!!@2@:LD.W R0, [SP + #64] @@: NOP bc4: 5c 08 00 00 .long 0x0000085c ->000002140 [!!!@2@:LD.W R0, [SP + #92] @@: NOP 00000bc8 : SystemInit(): ..\KF32Lib\system_init.c:238 * @param[in] SCLK_Value System master clock frequency,MHZ * @param[out] None * @retval :None */ void SystemInit(uint8_t SCLK_Value) { bc8: 2d 5d PUSH LR bca: e4 30 SUB SP, #4 bcc: a0 58 MOV R5, R0 bce: e5 83 ST.B [SP], R5 ..\KF32Lib\system_init.c:240 /* Configure the System clock source, PLL Multiplier and Divider factors */ SetSysClock(SCLK_Value); bd0: 5e 80 LD.B R5, [SP] bd2: 05 58 MOV R0, R5 bd4: 03 45 LD R5, [PC + #3] ;->0xbe0 :=0xa58 bd6: 05 5c LJMP R5 ..\KF32Lib\system_init.c:241 } bd8: e4 28 ADD SP, #4 bda: 0d 5d POP LR bdc: 1d 5c JMP LR bde: 00 00 NOP NOP be0: 58 0a 00 00 .long 0x00000a58 ->000002648 [!!!@2@:LD.W R2, [SP + #88] @@: NOP 00000be4 : SysTick_Config(): ..\Driver\User_SysTick.c:70 * @retval uint32_t * 0 -- success * 1 -- failure */ uint8_t SysTick_Config(uint8_t Frq, uint16_t Reload_ms) { be4: 2d 5d PUSH LR be6: ec 30 SUB SP, #12 be8: 80 58 MOV R4, R0 bea: a1 58 MOV R5, R1 bec: 84 e3 ST.B [SP + #4], R4 bee: a4 e2 ST.H [SP + #4], R5 ..\Driver\User_SysTick.c:73 uint32_t Reload; Reload = Frq * Reload_ms * 500U; bf0: 84 e1 LD.B R4, [SP + #4] bf2: a4 e0 LD.H R5, [SP + #4] bf4: 6c cb MULS R5, R4, R5 bf6: 00 00 NOP NOP bf8: 1c 44 LD R4, [PC + #28] ;->0xc68 :=0x1f4 bfa: 2d cb MULS R5, R5, R4 bfc: 00 00 NOP NOP bfe: e5 85 ST.W [SP], R5 ..\Driver\User_SysTick.c:74 if (Reload > 0xffffffU) c00: 5e 82 LD.W R5, [SP] c02: 1b 44 LD R4, [PC + #27] ;->0xc6c :=0xffffff c04: 54 70 CMP R5, R4 c06: 03 f9 JLS $+3 ;->0xc0c ..\Driver\User_SysTick.c:76 { return 1U; c08: 51 10 MOV R5, #1 c0a: 2a 04 SJMP $+42 ;->0xc5e ..\Driver\User_SysTick.c:82 } else {} /*before initializtion,disable systick timer*/ SYSTICK_Cmd(FALSE); c0c: 00 10 MOV R0, #0 c0e: 19 45 LD R5, [PC + #25] ;->0xc70 :=0x9e4 c10: 05 5c LJMP R5 ..\Driver\User_SysTick.c:83 INT_Interrupt_Enable(INT_SysTick, FALSE); c12: 0f 10 MOV R0, #15 c14: 10 10 MOV R1, #0 c16: 18 45 LD R5, [PC + #24] ;->0xc74 :=0x4f4 c18: 05 5c LJMP R5 ..\Driver\User_SysTick.c:85 /*write ST_CV any valer,clear ST_CV*/ SYSTICK_Counter_Updata(); c1a: 18 45 LD R5, [PC + #24] ;->0xc78 :=0xa4c c1c: 05 5c LJMP R5 ..\Driver\User_SysTick.c:88 /* Select SysTick clock source by using STCLKS */ ST_CALI &= (~0x80000000); c1e: 18 45 LD R5, [PC + #24] ;->0xc7c :=0x402000a0 c20: 17 44 LD R4, [PC + #23] ;->0xc7c :=0x402000a0 c22: e4 98 LD.W R4, [R4 + #3] c24: a7 4b CLR R4, #31 c26: ec a0 ST.W [R5 + #3], R4 ..\Driver\User_SysTick.c:91 /*select SCLK as the clock source of the system tick timer */ SYSTICK_Clock_Config(SYSTICK_SYS_CLOCK_DIV_2); c28: 00 10 MOV R0, #0 c2a: 16 45 LD R5, [PC + #22] ;->0xc80 :=0xa00 c2c: 05 5c LJMP R5 ..\Driver\User_SysTick.c:93 /**Set Reload value in ms*/ SYSTICK_Reload_Config(Reload - 1U); c2e: 5e 82 LD.W R5, [SP] c30: 6d cc SUB R5, R5, #1 c32: 05 58 MOV R0, R5 c34: 14 45 LD R5, [PC + #20] ;->0xc84 :=0xa38 c36: 05 5c LJMP R5 ..\Driver\User_SysTick.c:95 /*enable system timer IRQ&interrupt flag*/ SYSTICK_Systick_INT_Enable(TRUE); c38: 01 10 MOV R0, #1 c3a: 14 45 LD R5, [PC + #20] ;->0xc88 :=0xa1c c3c: 05 5c LJMP R5 ..\Driver\User_SysTick.c:97 /*Configuration system timer Interrupt Priority*/ INT_Interrupt_Priority_Config(INT_SysTick, 2, 0); c3e: 0f 10 MOV R0, #15 c40: 12 10 MOV R1, #2 c42: 20 10 MOV R2, #0 c44: 12 45 LD R5, [PC + #18] ;->0xc8c :=0x640 c46: 05 5c LJMP R5 ..\Driver\User_SysTick.c:99 /*enable systick timer*/ SYSTICK_Cmd(TRUE); c48: 01 10 MOV R0, #1 c4a: 0a 45 LD R5, [PC + #10] ;->0xc70 :=0x9e4 c4c: 05 5c LJMP R5 ..\Driver\User_SysTick.c:101 /*enable system timer Interrupt*/ INT_Interrupt_Enable(INT_SysTick, TRUE); c4e: 0f 10 MOV R0, #15 c50: 11 10 MOV R1, #1 c52: 09 45 LD R5, [PC + #9] ;->0xc74 :=0x4f4 c54: 05 5c LJMP R5 ..\Driver\User_SysTick.c:102 INT_Clear_Interrupt_Flag(INT_SysTick); c56: 0f 10 MOV R0, #15 c58: 0e 45 LD R5, [PC + #14] ;->0xc90 :=0x5ac c5a: 05 5c LJMP R5 ..\Driver\User_SysTick.c:104 return 0U; c5c: 50 10 MOV R5, #0 ..\Driver\User_SysTick.c:105 } c5e: 05 58 MOV R0, R5 c60: ec 28 ADD SP, #12 c62: 0d 5d POP LR c64: 1d 5c JMP LR c66: 00 00 NOP NOP c68: f4 01 00 00 .long 0x000001f4 ->000000500 [!!!@2@:CMN PC, R4 @@: NOP c6c: ff ff ff 00 .long 0x00ffffff ->016777215 c70: e4 09 00 00 .long 0x000009e4 ->000002532 [!!!@2@:LD.W R1, [SP + #228] @@: NOP c74: f4 04 00 00 .long 0x000004f4 ->000001268 [!!!@2@:SJMP $+244 ;->0xe5c @@: NOP c78: 4c 0a 00 00 .long 0x00000a4c ->000002636 [!!!@2@:LD.W R2, [SP + #76] @@: NOP c7c: a0 00 20 40 .long 0x402000a0 ->1075839136 [!!!@4@:DO #16, $+32 ;->0xcbc c80: 00 0a 00 00 .long 0x00000a00 ->000002560 [!!!@2@:LD.W R2, [SP + #0] @@: NOP c84: 38 0a 00 00 .long 0x00000a38 ->000002616 [!!!@2@:LD.W R2, [SP + #56] @@: NOP c88: 1c 0a 00 00 .long 0x00000a1c ->000002588 [!!!@2@:LD.W R2, [SP + #28] @@: NOP c8c: 40 06 00 00 .long 0x00000640 ->000001600 [!!!@2@:SJMP $-448 ;->0x90c @@: NOP c90: ac 05 00 00 .long 0x000005ac ->000001452 [!!!@2@:SJMP $+428 ;->0xfe8 @@: NOP 00000c94 <_NMI_exception>: _NMI_exception(): ..\kf_it.c:23 //***************************************************************************************** void __attribute__((interrupt)) _NMI_exception (void); void __attribute__((interrupt)) _NMI_exception (void) { } c94: 7d 5d CLR PSW, #29 c96: 1d 5c JMP LR 00000c98 <_HardFault_exception>: _HardFault_exception(): ..\kf_it.c:32 //***************************************************************************************** void __attribute__((interrupt)) _HardFault_exception (void); void __attribute__((interrupt)) _HardFault_exception (void) { } c98: 7d 5d CLR PSW, #29 c9a: 1d 5c JMP LR 00000c9c <_StackFault_exception>: _StackFault_exception(): ..\kf_it.c:41 //***************************************************************************************** void __attribute__((interrupt)) _StackFault_exception (void); void __attribute__((interrupt)) _StackFault_exception (void) { } c9c: 7d 5d CLR PSW, #29 c9e: 1d 5c JMP LR 00000ca0 <_AriFault_exception>: _AriFault_exception(): ..\kf_it.c:50 //***************************************************************************************** void __attribute__((interrupt)) _AriFault_exception (void); void __attribute__((interrupt)) _AriFault_exception (void) { } ca0: 7d 5d CLR PSW, #29 ca2: 1d 5c JMP LR 00000ca4 <_SVC_exception>: _SVC_exception(): ..\kf_it.c:59 //***************************************************************************************** void __attribute__((interrupt)) _SVC_exception (void); void __attribute__((interrupt)) _SVC_exception (void) { } ca4: 7d 5d CLR PSW, #29 ca6: 1d 5c JMP LR 00000ca8 <_SoftSV_exception>: _SoftSV_exception(): ..\kf_it.c:68 //***************************************************************************************** void __attribute__((interrupt)) _SoftSV_exception (void); void __attribute__((interrupt)) _SoftSV_exception (void) { } ca8: 7d 5d CLR PSW, #29 caa: 1d 5c JMP LR 00000cac <_SysTick_exception>: _SysTick_exception(): ..\kf_it.c:75 //***************************************************************************************** // SysTick Interrupt Course //***************************************************************************************** void __attribute__((interrupt)) _SysTick_exception (void); void __attribute__((interrupt)) _SysTick_exception (void) { cac: 2d 5d PUSH LR cae: 25 5d PUSH R5 ..\kf_it.c:76 Task_SysTick_Handler(); cb0: 03 45 LD R5, [PC + #3] ;->0xcbc :=0x3b4 cb2: 05 5c LJMP R5 ..\kf_it.c:77 } cb4: 7d 5d CLR PSW, #29 cb6: 05 5d POP R5 cb8: 0d 5d POP LR cba: 1d 5c JMP LR cbc: b4 03 00 00 .long 0x000003b4 ->000000948 [!!!@4@:JMP $-4980736 ;->0xff680cbc 00000cc0 <_ECC_exception>: _ECC_exception(): ..\kf_it.c:85 //***************************************************************************************** void __attribute__((interrupt)) _ECC_exception (void); void __attribute__((interrupt)) _ECC_exception (void) { } cc0: 7d 5d CLR PSW, #29 cc2: 1d 5c JMP LR 00000cc4
: main(): ..\main.c:13 * ****************************************************************************************/ #include "main.h" //Main Function int main(void) { cc4: 2d 5d PUSH LR ..\main.c:14 SystemInit(120U); cc6: 08 17 MOV R0, #120 cc8: 17 45 LD R5, [PC + #23] ;->0xd24 :=0xbc8 cca: 05 5c LJMP R5 ..\main.c:16 GPIO_Write_Mode_Bits(PD12_LED1_PIN, GPIO_MODE_OUT); ccc: 17 40 LD R0, [PC + #23] ;->0xd28 :=0x500000c0 cce: 11 10 MOV R1, #1 cd0: 8c 7a LSL R1, #12 cd2: 21 10 MOV R2, #1 cd4: 16 45 LD R5, [PC + #22] ;->0xd2c :=0x438 cd6: 05 5c LJMP R5 ..\main.c:17 GPIO_Set_Output_Data_Bits(PD12_LED1_PIN, Bit_SET); cd8: 14 40 LD R0, [PC + #20] ;->0xd28 :=0x500000c0 cda: 11 10 MOV R1, #1 cdc: 8c 7a LSL R1, #12 cde: 21 10 MOV R2, #1 ce0: 14 45 LD R5, [PC + #20] ;->0xd30 :=0x48e ce2: 05 5c LJMP R5 ..\main.c:19 GPIO_Write_Mode_Bits(PF7_LED4_PIN, GPIO_MODE_OUT); ce4: 14 40 LD R0, [PC + #20] ;->0xd34 :=0x50000140 ce6: 10 18 MOV R1, #128 ce8: 21 10 MOV R2, #1 cea: 11 45 LD R5, [PC + #17] ;->0xd2c :=0x438 cec: 05 5c LJMP R5 ..\main.c:20 GPIO_Set_Output_Data_Bits(PF7_LED4_PIN, Bit_RESET); cee: 12 40 LD R0, [PC + #18] ;->0xd34 :=0x50000140 cf0: 10 18 MOV R1, #128 cf2: 20 10 MOV R2, #0 cf4: 0f 45 LD R5, [PC + #15] ;->0xd30 :=0x48e cf6: 05 5c LJMP R5 ..\main.c:22 if (0U != SysTick_Config(120U, 1U)) cf8: 08 17 MOV R0, #120 cfa: 11 10 MOV R1, #1 cfc: 0f 45 LD R5, [PC + #15] ;->0xd38 :=0xbe4 cfe: 05 5c LJMP R5 d00: a0 58 MOV R5, R0 d02: 50 38 CMP R5, #0 d04: 07 f0 JZ $+7 ;->0xd12 ..\main.c:25 { /* If the parameter of $SysTick_Config$ is wrong, light on LED4.*/ GPIO_Set_Output_Data_Bits(PF7_LED4_PIN, Bit_SET); d06: 0c 40 LD R0, [PC + #12] ;->0xd34 :=0x50000140 d08: 10 18 MOV R1, #128 d0a: 21 10 MOV R2, #1 d0c: 09 45 LD R5, [PC + #9] ;->0xd30 :=0x48e d0e: 05 5c LJMP R5 ..\main.c:29 while (1) { ; } d10: 00 04 SJMP $+0 ;->0xd10 ..\main.c:31 } INT_All_Enable(TRUE); d12: 01 10 MOV R0, #1 d14: 0a 45 LD R5, [PC + #10] ;->0xd3c :=0x4d8 d16: 05 5c LJMP R5 ..\main.c:32 TaskProc(); d18: 0a 45 LD R5, [PC + #10] ;->0xd40 :=0x258 d1a: 05 5c LJMP R5 d1c: 50 10 MOV R5, #0 ..\main.c:33 } d1e: 05 58 MOV R0, R5 d20: 0d 5d POP LR d22: 1d 5c JMP LR d24: c8 0b 00 00 .long 0x00000bc8 ->000003016 [!!!@2@:LD.W R3, [SP + #200] @@: NOP d28: c0 00 00 50 .long 0x500000c0 ->1342177472 [!!!@4@:DO R0, $+20480 ;->0xad28 d2c: 38 04 00 00 .long 0x00000438 ->000001080 [!!!@2@:SJMP $+56 ;->0xd9c @@: NOP d30: 8e 04 00 00 .long 0x0000048e ->000001166 [!!!@2@:SJMP $+142 ;->0xe4c @@: NOP d34: 40 01 00 50 .long 0x50000140 ->1342177600 [!!!@2@:CMN R4, R0 @@: JB [R0], #0 d38: e4 0b 00 00 .long 0x00000be4 ->000003044 [!!!@2@:LD.W R3, [SP + #228] @@: NOP d3c: d8 04 00 00 .long 0x000004d8 ->000001240 [!!!@2@:SJMP $+216 ;->0xeec @@: NOP d40: 58 02 00 00 .long 0x00000258 ->000000600 [!!!@2@:SVC SVC, #88 @@: NOP 00000d44 <__init_class_end>: d44: 19 02 SVC SVC, #25 d46: 08 0d LD.W R5, [SP + #8] d48: 01 08 LD.W R0, [SP + #1] d4a: 1b 02 SVC SVC, #27 d4c: 08 0e LD.W R6, [SP + #8] d4e: 01 08 LD.W R0, [SP + #1] d50: 1d 02 SVC SVC, #29 d52: 08 0f LD.W R7, [SP + #8] d54: 01 08 LD.W R0, [SP + #1] d56: 1f 02 SVC SVC, #31 d58: 08 10 MOV R0, #8 d5a: 01 08 LD.W R0, [SP + #1] d5c: 21 02 SVC SVC, #33 d5e: 08 11 MOV R0, #24 d60: 01 08 LD.W R0, [SP + #1] d62: 23 02 SVC SVC, #35 d64: 08 12 MOV R0, #40 d66: 01 08 LD.W R0, [SP + #1] d68: 25 02 SVC SVC, #37 d6a: 08 13 MOV R0, #56 d6c: 01 08 LD.W R0, [SP + #1] d6e: 27 02 SVC SVC, #39 d70: 08 14 MOV R0, #72 d72: 01 08 LD.W R0, [SP + #1] d74: 29 02 SVC SVC, #41 d76: 08 15 MOV R0, #88 d78: 01 08 LD.W R0, [SP + #1] d7a: 2b 02 SVC SVC, #43 d7c: 08 16 MOV R0, #104 d7e: 01 08 LD.W R0, [SP + #1] d80: 2d 02 SVC SVC, #45 d82: 08 17 MOV R0, #120 d84: 01 08 LD.W R0, [SP + #1] d86: 2f 02 SVC SVC, #47 d88: 08 18 MOV R0, #136 d8a: 01 08 LD.W R0, [SP + #1] d8c: 31 02 SVC SVC, #49 d8e: 08 19 MOV R0, #152 d90: 01 08 LD.W R0, [SP + #1] d92: 33 04 SJMP $+51 ;->0xdf8 d94: 04 0d LD.W R5, [SP + #4] d96: 01 04 SJMP $+1 ;->0xd98 d98: 35 04 SJMP $+53 ;->0xe02 d9a: 04 1b MOV R0, #180 d9c: 02 04 SJMP $+2 ;->0xda0 d9e: 37 04 SJMP $+55 ;->0xe0c da0: 04 0e LD.W R6, [SP + #4] da2: 01 04 SJMP $+1 ;->0xda4 da4: 39 04 SJMP $+57 ;->0xe16 da6: 04 1d MOV R0, #212 da8: 02 04 SJMP $+2 ;->0xdac daa: 3b 04 SJMP $+59 ;->0xe20 dac: 04 0f LD.W R7, [SP + #4] dae: 01 04 SJMP $+1 ;->0xdb0 db0: 3d 04 SJMP $+61 ;->0xe2a db2: 04 1f MOV R0, #244 db4: 02 04 SJMP $+2 ;->0xdb8 db6: 3f 04 SJMP $+63 ;->0xe34 db8: 04 10 MOV R0, #4 dba: 01 04 SJMP $+1 ;->0xdbc dbc: 41 04 SJMP $+65 ;->0xe3e dbe: 04 21 ST.W [SP + #4], R1 dc0: 02 04 SJMP $+2 ;->0xdc4 dc2: 43 04 SJMP $+67 ;->0xe48 dc4: 04 11 MOV R0, #20 dc6: 01 04 SJMP $+1 ;->0xdc8 dc8: 45 04 SJMP $+69 ;->0xe52 dca: 04 23 ST.W [SP + #4], R3 dcc: 02 04 SJMP $+2 ;->0xdd0 dce: 47 04 SJMP $+71 ;->0xe5c dd0: 04 12 MOV R0, #36 dd2: 01 04 SJMP $+1 ;->0xdd4 dd4: 49 04 SJMP $+73 ;->0xe66 dd6: 04 25 ST.W [SP + #4], R5 dd8: 02 04 SJMP $+2 ;->0xddc dda: 4b 04 SJMP $+75 ;->0xe70 ddc: 04 13 MOV R0, #52 dde: 01 04 SJMP $+1 ;->0xde0 de0: 4d 04 SJMP $+77 ;->0xe7a de2: 04 27 ST.W [SP + #4], R7 de4: 02 04 SJMP $+2 ;->0xde8 de6: 4f 04 SJMP $+79 ;->0xe84 de8: 04 14 MOV R0, #68 dea: 01 04 SJMP $+1 ;->0xdec dec: 51 04 SJMP $+81 ;->0xe8e dee: 04 29 ADD R0, #20 df0: 02 04 SJMP $+2 ;->0xdf4 df2: 53 04 SJMP $+83 ;->0xe98 df4: 04 15 MOV R0, #84 df6: 01 04 SJMP $+1 ;->0xdf8 df8: 55 04 SJMP $+85 ;->0xea2 dfa: 04 2b ADD R0, #52 dfc: 02 04 SJMP $+2 ;->0xe00 dfe: 57 04 SJMP $+87 ;->0xeac e00: 04 16 MOV R0, #100 e02: 01 04 SJMP $+1 ;->0xe04 e04: 59 04 SJMP $+89 ;->0xeb6 e06: 04 2d ADD R0, #84 e08: 02 04 SJMP $+2 ;->0xe0c e0a: 5b 04 SJMP $+91 ;->0xec0 e0c: 04 17 MOV R0, #116 e0e: 01 04 SJMP $+1 ;->0xe10 e10: 5d 04 SJMP $+93 ;->0xeca e12: 04 2f ADD R0, #116 e14: 02 04 SJMP $+2 ;->0xe18 e16: 5f 04 SJMP $+95 ;->0xed4 e18: 04 18 MOV R0, #132 e1a: 01 04 SJMP $+1 ;->0xe1c e1c: 61 04 SJMP $+97 ;->0xede e1e: 04 31 SUB R0, #20 e20: 02 04 SJMP $+2 ;->0xe24 e22: 63 04 SJMP $+99 ;->0xee8 e24: 04 19 MOV R0, #148 e26: 01 04 SJMP $+1 ;->0xe28 e28: 65 08 LD.W R0, [SP + #101] e2a: 02 33 SUB R0, #50 e2c: 04 02 SVC SVC, #4 e2e: 67 08 LD.W R0, [SP + #103] e30: 02 0d LD.W R5, [SP + #2] e32: 01 02 SVC SVC, #1 e34: 69 08 LD.W R0, [SP + #105] e36: 02 35 SUB R0, #82 e38: 04 02 SVC SVC, #4 e3a: 6b 08 LD.W R0, [SP + #107] e3c: 02 1b MOV R0, #178 e3e: 02 02 SVC SVC, #2 e40: 6d 08 LD.W R0, [SP + #109] e42: 02 37 SUB R0, #114 e44: 04 02 SVC SVC, #4 e46: 6f 08 LD.W R0, [SP + #111] e48: 02 0e LD.W R6, [SP + #2] e4a: 01 02 SVC SVC, #1 e4c: 71 08 LD.W R0, [SP + #113] e4e: 02 39 CMP R0, #18 e50: 04 02 SVC SVC, #4 e52: 73 08 LD.W R0, [SP + #115] e54: 02 1d MOV R0, #210 e56: 02 02 SVC SVC, #2 e58: 75 08 LD.W R0, [SP + #117] e5a: 02 3b CMP R0, #50 e5c: 04 02 SVC SVC, #4 e5e: 77 08 LD.W R0, [SP + #119] e60: 02 0f LD.W R7, [SP + #2] e62: 01 02 SVC SVC, #1 00000e64 <_Default_NULL_exception>: _Default_NULL_exception(): ..\_config\vector.c:442 }; void __attribute__((interrupt,section(".rodata"))) _Default_NULL_exception (void); void __attribute__((interrupt,section(".rodata"))) _Default_NULL_exception (void) { while(1){}; e64: 00 04 SJMP $+0 ;->0xe64 ... Disassembly of section .data: 10000000 <__lpdata_end__>: 10000000: 01 01 CMN R0, R1 10000002: 01 00 TRAP1 .short 0x0001 10000004: 0a 00 ENI ENI 10000006: 00 00 NOP NOP 10000008: 0a 00 ENI ENI 1000000a: 00 00 NOP NOP 1000000c: 1c 03 00 00 JMP $+1835008 ;->0x1038000c 10000010: 01 01 CMN R0, R1 10000012: 02 00 TRAP2 .short 0x0002 10000014: 64 00 00 00 LDS.B R0, [R0 + #-256] 10000018: 64 00 00 00 LDS.B R0, [R0 + #-256] 1000001c: 00 02 SVC SVC ... 10000020 : 10000020: 00 00 00 00 .... 10000024 : 10000024: 00 00 00 00 .... 10000028 : ... 100000b4 <__Heap_Start__>: ... 10000100 <__Heap_length__>: ... 100001b4 <__Heap_End__>: ... 1000fe00 : ...