blinkled.elf: file format elf32-kungfu32-little Disassembly of section .text: 00000000 <_start>: __vector_entry__: 0: 00 00 01 10 b8 02 00 00 14 08 00 00 18 08 00 00 ................ 10: 94 09 00 00 1c 08 00 00 20 08 00 00 4c d3 fe ef ........ ...L... 20: 94 09 00 00 94 09 00 00 94 09 00 00 24 08 00 00 ............$... 30: 94 09 00 00 94 09 00 00 28 08 00 00 2c 08 00 00 ........(...,... 40: 94 09 00 00 94 09 00 00 94 09 00 00 94 09 00 00 ................ 50: 94 09 00 00 94 09 00 00 94 09 00 00 94 09 00 00 ................ 60: 94 09 00 00 94 09 00 00 94 09 00 00 94 09 00 00 ................ 70: 94 09 00 00 94 09 00 00 94 09 00 00 94 09 00 00 ................ 80: 94 09 00 00 94 09 00 00 94 09 00 00 94 09 00 00 ................ 90: 94 09 00 00 94 09 00 00 94 09 00 00 94 09 00 00 ................ a0: 94 09 00 00 94 09 00 00 94 09 00 00 94 09 00 00 ................ b0: 94 09 00 00 94 09 00 00 94 09 00 00 94 09 00 00 ................ c0: 94 09 00 00 94 09 00 00 94 09 00 00 94 09 00 00 ................ d0: 94 09 00 00 94 09 00 00 94 09 00 00 40 08 00 00 ............@... e0: 94 09 00 00 94 09 00 00 94 09 00 00 94 09 00 00 ................ f0: 94 09 00 00 94 09 00 00 94 09 00 00 94 09 00 00 ................ 100: 94 09 00 00 94 09 00 00 94 09 00 00 94 09 00 00 ................ 110: 94 09 00 00 94 09 00 00 94 09 00 00 94 09 00 00 ................ 120: 94 09 00 00 94 09 00 00 94 09 00 00 94 09 00 00 ................ 130: 94 09 00 00 94 09 00 00 94 09 00 00 94 09 00 00 ................ 140: 94 09 00 00 94 09 00 00 94 09 00 00 94 09 00 00 ................ 150: 94 09 00 00 94 09 00 00 94 09 00 00 94 09 00 00 ................ 160: 94 09 00 00 94 09 00 00 94 09 00 00 94 09 00 00 ................ 170: 94 09 00 00 94 09 00 00 94 09 00 00 94 09 00 00 ................ 180: 94 09 00 00 94 09 00 00 94 09 00 00 94 09 00 00 ................ 190: 94 09 00 00 94 09 00 00 94 09 00 00 94 09 00 00 ................ 1a0: 94 09 00 00 94 09 00 00 94 09 00 00 94 09 00 00 ................ 1b0: 94 09 00 00 94 09 00 00 94 09 00 00 94 09 00 00 ................ 1c0: 94 09 00 00 94 09 00 00 94 09 00 00 94 09 00 00 ................ 1d0: 94 09 00 00 94 09 00 00 94 09 00 00 94 09 00 00 ................ 1e0: 94 09 00 00 94 09 00 00 94 09 00 00 94 09 00 00 ................ 1f0: 94 09 00 00 94 09 00 00 94 09 00 00 94 09 00 00 ................ 00000200 : TaskTimer(): ..\task\task.c:99 } } } static void TaskTimer(void) { 200: 87 5f PUSH {R6-R8,LR} 202: 60 10 MOV R6, #0 204: 09 47 LD R7, [PC + #9] ;->0x228 :=0x10000014 ..\task\task.c:120 case TIMER_MODE_CYCROUTINE: // cyclely routine pt->lLastTime+=pt->lPeriod; pt->routine(pt->Param1); // start user's routine break; case TIMER_MODE_ONCEROUTINE: // timer routine once pt->cUse=0; //防止在routine里stoptimer后启动timer造成错误停止 206: 06 59 MOV R8, R6 ..\task\task.c:106 unsigned char i; pt=&TimerData[0]; // pointer to the first timer for(i=0;icUse) 208: af c3 ADD R5, R7, R6 20a: a7 e5 LD.B R4, [R7 + R6] 20c: 40 38 CMP R4, #0 20e: 06 f0 JZ $+6 ;->0x21a ..\task\task.c:108 continue; if((--(pt->lLastTime))<=0) 210: 9d 98 LD.W R3, [R5 + #2] 212: 63 cc SUB R4, R3, #1 214: ac a0 ST.W [R5 + #2], R4 216: 40 38 CMP R4, #0 218: 0a fd JLE $+10 ;->0x22c 21a: 64 29 ADD R6, #20 ..\task\task.c:104 { TIMER_DATA *pt; unsigned char i; pt=&TimerData[0]; // pointer to the first timer for(i=0;i0x208 ..\task\task.c:129 pt->cUse=0; break; } } } } 220: 07 5e POP {R6-R8} 222: 0d 5d POP LR 224: 1d 5c JMP LR 226: 00 00 NOP NOP 228: 14 00 00 10 .long 0x10000014 ->268435476 [!!!@4@:DMSC16LL ACC0, ACC4, R0, R0 ..\task\task.c:110 { if(!pt->cUse) continue; if((--(pt->lLastTime))<=0) { switch(pt->cMode) 22c: 5d 88 LD.B R3, [R5 + #1] 22e: 31 38 CMP R3, #1 230: 09 f0 JZ $+9 ;->0x242 232: 30 38 CMP R3, #0 234: 03 f1 JNZ $+3 ;->0x23a ..\task\task.c:113 { case TIMER_MODE_TIMER: // timer only pt->cUse=0; 236: 53 83 ST.B [R5], R3 ..\task\task.c:114 break; 238: f1 07 SJMP $-15 ;->0x21a ..\task\task.c:110 { if(!pt->cUse) continue; if((--(pt->lLastTime))<=0) { switch(pt->cMode) 23a: 32 38 CMP R3, #2 23c: 08 f0 JZ $+8 ;->0x24c ..\task\task.c:124 case TIMER_MODE_ONCEROUTINE: // timer routine once pt->cUse=0; //防止在routine里stoptimer后启动timer造成错误停止 pt->routine(pt->Param1); // start user routine break; default: pt->cUse=0; 23e: 58 83 ST.B [R5], R8 ..\task\task.c:125 break; 240: ed 07 SJMP $-19 ;->0x21a ..\task\task.c:120 case TIMER_MODE_CYCROUTINE: // cyclely routine pt->lLastTime+=pt->lPeriod; pt->routine(pt->Param1); // start user's routine break; case TIMER_MODE_ONCEROUTINE: // timer routine once pt->cUse=0; //防止在routine里stoptimer后启动timer造成错误停止 242: 58 83 ST.B [R5], R8 ..\task\task.c:121 pt->routine(pt->Param1); // start user routine 244: e5 98 LD.W R4, [R5 + #3] 246: 05 99 LD.W R0, [R5 + #4] 248: 04 5c LJMP R4 ..\task\task.c:122 break; 24a: e8 07 SJMP $-24 ;->0x21a ..\task\task.c:116 { case TIMER_MODE_TIMER: // timer only pt->cUse=0; break; case TIMER_MODE_CYCROUTINE: // cyclely routine pt->lLastTime+=pt->lPeriod; 24c: 5d 98 LD.W R3, [R5 + #1] 24e: e4 c2 ADD R4, R4, R3 250: ac a0 ST.W [R5 + #2], R4 ..\task\task.c:117 pt->routine(pt->Param1); // start user's routine 252: e5 98 LD.W R4, [R5 + #3] 254: 05 99 LD.W R0, [R5 + #4] 256: 04 5c LJMP R4 ..\task\task.c:118 break; 258: e1 07 SJMP $-31 ;->0x21a ... 0000025c : TaskProc(): ..\task\task.c:61 } void TaskProc(void) { 25c: 87 5f PUSH {R6-R8,LR} 25e: 11 46 LD R6, [PC + #17] ;->0x2a0 :=0x10000004 260: 11 47 LD R7, [PC + #17] ;->0x2a4 :=0x10000000 ..\task\task.c:81 { TaskDb[i].lLastTime-=TMP1msCount; } } } TMP1msCount = 0; 262: 80 10 MOV R8, #0 ..\task\task.c:75 { if(TMP1msCount>0) { for(i=0;i0x29c ..\task\task.c:75 { if(TMP1msCount>0) { for(i=0;i0x280 ..\task\task.c:77 { TaskDb[i].lLastTime-=TMP1msCount; 276: ed c6 SUB R5, R5, R3 ..\task\task.c:87 for(i=0;i0x282 27e: 00 04 SJMP $+0 ;->0x27e 280: ff 07 SJMP $-1 ;->0x27e ..\task\task.c:89 { TaskDb[i].lLastTime += TaskDb[i].lPeriod; 282: 6d c2 ADD R5, R5, R1 ..\task\task.c:90 if(TaskDb[i].TaskProc!=NULL) 284: 20 38 CMP R2, #0 286: fc f0 JZ $-4 ;->0x27e 288: 78 85 ST.W [R7], R8 28a: 75 a0 ST.W [R6 + #1], R5 ..\task\task.c:91 TaskDb[i].TaskProc(); //执行任务 28c: 02 5c LJMP R2 ..\task\task.c:75 { if(TMP1msCount>0) { for(i=0;i0x272 29c: f1 07 SJMP $-15 ;->0x27e 29e: 00 00 NOP NOP 2a0: 04 00 00 10 .long 0x10000004 ->268435460 2a4: 00 00 00 10 .long 0x10000000 ->268435456 [!!!@2@:NOP @@: MOV R0, #0 000002a8 : Task_SysTick_Handler(): ..\task\task.c:134 } void Task_SysTick_Handler(void) { TMP1msCount++; 2a8: 03 45 LD R5, [PC + #3] ;->0x2b4 :=0x10000000 2aa: 35 82 LD.W R3, [R5] 2ac: 63 c0 ADD R4, R3, #1 2ae: 54 85 ST.W [R5], R4 ..\task\task.c:135 } 2b0: 1d 5c JMP LR 2b2: 00 00 NOP NOP 2b4: 00 00 00 10 .long 0x10000000 ->268435456 [!!!@2@:NOP @@: MOV R0, #0 000002b8 : startup(): ..\_config\startup.c:22 //####################################################################// int main(void); int startup(void); //####################################################################// int startup(void) { 2b8: 2d 5d PUSH LR ..\_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 2ba: 40 10 MOV R4, #0 2bc: 51 10 MOV R5, #1 2be: ae 7b LSL R5, #30 2c0: 54 85 ST.W [R5], R4 ..\_config\startup.c:36 //############# 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 2c2: 12 45 LD R5, [PC + #18] ;->0x308 :=0x10000000 2c4: 12 44 LD R4, [PC + #18] ;->0x30c :=0x10000014 2c6: 45 70 CMP R4, R5 2c8: 0d f9 JLS $+13 ;->0x2e2 2ca: 12 44 LD R4, [PC + #18] ;->0x310 :=0x998 ..\_config\startup.c:21 #endif //####################################################################// int main(void); int startup(void); //####################################################################// int startup(void) 2cc: 12 43 LD R3, [PC + #18] ;->0x314 :=0x10000004 2ce: 13 42 LD R2, [PC + #19] ;->0x318 :=0x10000017 2d0: da c6 SUB R3, R2, R3 2d2: 1a 7c LSR R3, #2 2d4: 5b c0 ADD R3, R3, #1 2d6: 1a 7a LSL R3, #2 2d8: 5b c3 ADD R3, R3, R5 ..\_config\startup.c:37 //############# 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 *begin = *s; 2da: 24 72 LD.W R2, [R4++] 2dc: 52 73 ST.W [R5++], R2 ..\_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 2de: 53 70 CMP R5, R3 2e0: fd f1 JNZ $-3 ;->0x2da ..\_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 2e2: 0f 45 LD R5, [PC + #15] ;->0x31c :=0x10000014 2e4: 0f 44 LD R4, [PC + #15] ;->0x320 :=0x10000078 2e6: 45 70 CMP R4, R5 2e8: 0c f9 JLS $+12 ;->0x300 ..\_config\startup.c:21 #endif //####################################################################// int main(void); int startup(void); //####################################################################// int startup(void) 2ea: 0f 44 LD R4, [PC + #15] ;->0x324 :=0x10000018 2ec: 0f 43 LD R3, [PC + #15] ;->0x328 :=0x1000007b 2ee: 1b c7 SUB R3, R3, R4 2f0: 1a 7c LSR R3, #2 2f2: 5b c0 ADD R3, R3, #1 2f4: 1a 7a LSL R3, #2 2f6: 5b c3 ADD R3, R3, R5 ..\_config\startup.c:55 //############# 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 *begin = 0;begin++; 2f8: 40 10 MOV R4, #0 2fa: 54 73 ST.W [R5++], R4 ..\_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 2fc: 53 70 CMP R5, R3 2fe: fe f1 JNZ $-2 ;->0x2fa ..\_config\startup.c:59 *begin = 0;begin++; } #endif //############# begin to run main function #############// main(); 300: 0b 40 LD R0, [PC + #11] ;->0x32c :=0x844 302: 00 5c LJMP R0 304: 00 04 SJMP $+0 ;->0x304 306: 00 00 NOP NOP 308: 00 00 00 10 .long 0x10000000 ->268435456 [!!!@2@:NOP @@: MOV R0, #0 30c: 14 00 00 10 .long 0x10000014 ->268435476 [!!!@4@:DMSC16LL ACC0, ACC4, R0, R0 310: 98 09 00 00 .long 0x00000998 ->000002456 [!!!@2@:LD.W R1, [SP + #152] @@: NOP 314: 04 00 00 10 .long 0x10000004 ->268435460 318: 17 00 00 10 .long 0x10000017 ->268435479 [!!!@4@:DMSCF16LH ACC0, ACC4, R0, R0 31c: 14 00 00 10 .long 0x10000014 ->268435476 [!!!@4@:DMSC16LL ACC0, ACC4, R0, R0 320: 78 00 00 10 .long 0x10000078 ->268435576 [!!!@4@:ST.B [R0 + #4], R0 324: 18 00 00 10 .long 0x10000018 ->268435480 [!!!@4@:MULS R4, R0, R0 328: 7b 00 00 10 .long 0x1000007b ->268435579 [!!!@4@:ST.B [R0 + #196], R0 32c: 44 08 00 00 .long 0x00000844 ->000002116 [!!!@2@:LD.W R0, [SP + #68] @@: NOP 00000330 : INT_All_Enable(): ..\KF32Lib\src\kf32a156_int.c:242 /*---------------- 设置INT_CTL0寄存器AIE位 ----------------*/ if (NewState != FALSE) { /* 全局可屏蔽中断使能 */ SFR_SET_BIT_ASM(INT_CTL0, INT_CTL0_AIE_POS); 330: 03 45 LD R5, [PC + #3] ;->0x33c :=0x40200000 ..\KF32Lib\src\kf32a156_int.c:239 { /* 参数校验 */ CHECK_RESTRICTION(CHECK_FUNCTIONAL_STATE(NewState)); /*---------------- 设置INT_CTL0寄存器AIE位 ----------------*/ if (NewState != FALSE) 332: 00 38 CMP R0, #0 334: 06 f1 JNZ $+6 ;->0x340 ..\KF32Lib\src\kf32a156_int.c:247 SFR_SET_BIT_ASM(INT_CTL0, INT_CTL0_AIE_POS); } else { /* 全局可屏蔽中断禁止 */ SFR_CLR_BIT_ASM(INT_CTL0, INT_CTL0_AIE_POS); 336: 28 4e CLR [R5], #0 ..\KF32Lib\src\kf32a156_int.c:249 } } 338: 1d 5c JMP LR 33a: 00 00 NOP NOP 33c: 00 00 20 40 .long 0x40200000 ->1075838976 [!!!@2@:NOP @@: LD R0, [PC + #32] ;->0x3bc :=0x5c1d ..\KF32Lib\src\kf32a156_int.c:242 /*---------------- 设置INT_CTL0寄存器AIE位 ----------------*/ if (NewState != FALSE) { /* 全局可屏蔽中断使能 */ SFR_SET_BIT_ASM(INT_CTL0, INT_CTL0_AIE_POS); 340: 28 4c SET [R5], #0 ..\KF32Lib\src\kf32a156_int.c:249 else { /* 全局可屏蔽中断禁止 */ SFR_CLR_BIT_ASM(INT_CTL0, INT_CTL0_AIE_POS); } } 342: 1d 5c JMP LR 00000344 : INT_Interrupt_Enable(): ..\KF32Lib\src\kf32a156_int.c:269 /* 参数校验 */ CHECK_RESTRICTION(CHECK_PERIPHERAL_INTERRUPT_INDEX(Peripheral)); CHECK_RESTRICTION(CHECK_FUNCTIONAL_STATE(NewState)); if(Peripheral <= INT_SysTick) 344: 0f 38 CMP R0, #15 346: 21 f9 JLS $+33 ;->0x388 ..\KF32Lib\src\kf32a156_int.c:276 /*---------------- 设置INT_EIE0寄存器 ----------------*/ tmask = ((uint32_t)1 << Peripheral); tmpreg = ((uint32_t)NewState << Peripheral); INT_EIE0 = SFR_Config(INT_EIE0, ~tmask, tmpreg); } else if(Peripheral <= INT_SPI1) 348: 0f 3a CMP R0, #47 34a: 11 f9 JLS $+17 ;->0x36c ..\KF32Lib\src\kf32a156_int.c:283 /*---------------- 设置INT_EIE1寄存器 ----------------*/ tmask = ((uint32_t)1 << (Peripheral - INT_WWDT)); tmpreg = ((uint32_t)NewState << (Peripheral - INT_WWDT)); INT_EIE1 = SFR_Config(INT_EIE1, ~tmask, tmpreg); } else if(Peripheral <= INT_USART7) 34c: 0f 3c CMP R0, #79 34e: 0b f8 JHI $+11 ;->0x364 ..\KF32Lib\src\kf32a156_int.c:286 { /*---------------- 设置INT_EIE2寄存器 ----------------*/ tmask = ((uint32_t)1 << (Peripheral - INT_DMA1)); 350: 00 33 SUB R0, #48 ..\KF32Lib\src\kf32a156_int.c:288 tmpreg = ((uint32_t)NewState << (Peripheral - INT_DMA1)); INT_EIE2 = SFR_Config(INT_EIE2, ~tmask, tmpreg); 352: 06 45 LD R5, [PC + #6] ;->0x368 :=0x40200000 354: 5d 99 LD.W R3, [R5 + #5] ..\KF32Lib\src\kf32a156_int.c:286 INT_EIE1 = SFR_Config(INT_EIE1, ~tmask, tmpreg); } else if(Peripheral <= INT_USART7) { /*---------------- 设置INT_EIE2寄存器 ----------------*/ tmask = ((uint32_t)1 << (Peripheral - INT_DMA1)); 356: 41 10 MOV R4, #1 358: 24 da LSL R4, R4, R0 ..\KF32Lib\src\kf32a156_int.c:288 tmpreg = ((uint32_t)NewState << (Peripheral - INT_DMA1)); INT_EIE2 = SFR_Config(INT_EIE2, ~tmask, tmpreg); 35a: 44 68 NOT R4, R4 KF32A156.h:14158 ---------------------------------------------------------------------------- */ /* 写锟斤拷锟解功锟杰寄达拷锟斤拷 */ static inline uint32_t SFR_Config (uint32_t SfrMem, uint32_t SfrMask, uint32_t WriteVal) { return ((SfrMem & SfrMask) | (WriteVal)); 35c: e4 d4 ANL R4, R4, R3 ..\KF32Lib\src\kf32a156_int.c:287 } else if(Peripheral <= INT_USART7) { /*---------------- 设置INT_EIE2寄存器 ----------------*/ tmask = ((uint32_t)1 << (Peripheral - INT_DMA1)); tmpreg = ((uint32_t)NewState << (Peripheral - INT_DMA1)); 35e: 01 da LSL R0, R1, R0 KF32A156.h:14158 360: 04 d6 ORL R0, R4, R0 ..\KF32Lib\src\kf32a156_int.c:288 INT_EIE2 = SFR_Config(INT_EIE2, ~tmask, tmpreg); 362: 68 a1 ST.W [R5 + #5], R0 ..\KF32Lib\src\kf32a156_int.c:294 } else { ; } } 364: 1d 5c JMP LR 366: 00 00 NOP NOP 368: 00 00 20 40 .long 0x40200000 ->1075838976 [!!!@2@:NOP @@: LD R0, [PC + #32] ;->0x3e8 :=0x5c1da1e8 ..\KF32Lib\src\kf32a156_int.c:279 INT_EIE0 = SFR_Config(INT_EIE0, ~tmask, tmpreg); } else if(Peripheral <= INT_SPI1) { /*---------------- 设置INT_EIE1寄存器 ----------------*/ tmask = ((uint32_t)1 << (Peripheral - INT_WWDT)); 36c: 00 31 SUB R0, #16 ..\KF32Lib\src\kf32a156_int.c:281 tmpreg = ((uint32_t)NewState << (Peripheral - INT_WWDT)); INT_EIE1 = SFR_Config(INT_EIE1, ~tmask, tmpreg); 36e: 06 45 LD R5, [PC + #6] ;->0x384 :=0x40200000 370: dd 98 LD.W R3, [R5 + #3] ..\KF32Lib\src\kf32a156_int.c:279 INT_EIE0 = SFR_Config(INT_EIE0, ~tmask, tmpreg); } else if(Peripheral <= INT_SPI1) { /*---------------- 设置INT_EIE1寄存器 ----------------*/ tmask = ((uint32_t)1 << (Peripheral - INT_WWDT)); 372: 41 10 MOV R4, #1 374: 24 da LSL R4, R4, R0 ..\KF32Lib\src\kf32a156_int.c:281 tmpreg = ((uint32_t)NewState << (Peripheral - INT_WWDT)); INT_EIE1 = SFR_Config(INT_EIE1, ~tmask, tmpreg); 376: 44 68 NOT R4, R4 KF32A156.h:14158 378: e4 d4 ANL R4, R4, R3 ..\KF32Lib\src\kf32a156_int.c:280 } else if(Peripheral <= INT_SPI1) { /*---------------- 设置INT_EIE1寄存器 ----------------*/ tmask = ((uint32_t)1 << (Peripheral - INT_WWDT)); tmpreg = ((uint32_t)NewState << (Peripheral - INT_WWDT)); 37a: 01 da LSL R0, R1, R0 KF32A156.h:14158 37c: 04 d6 ORL R0, R4, R0 ..\KF32Lib\src\kf32a156_int.c:281 INT_EIE1 = SFR_Config(INT_EIE1, ~tmask, tmpreg); 37e: e8 a0 ST.W [R5 + #3], R0 ..\KF32Lib\src\kf32a156_int.c:294 } else { ; } } 380: 1d 5c JMP LR 382: 00 00 NOP NOP 384: 00 00 20 40 .long 0x40200000 ->1075838976 [!!!@2@:NOP @@: LD R0, [PC + #32] ;->0x404 :=0xf0253856 ..\KF32Lib\src\kf32a156_int.c:274 if(Peripheral <= INT_SysTick) { /*---------------- 设置INT_EIE0寄存器 ----------------*/ tmask = ((uint32_t)1 << Peripheral); tmpreg = ((uint32_t)NewState << Peripheral); INT_EIE0 = SFR_Config(INT_EIE0, ~tmask, tmpreg); 388: 05 45 LD R5, [PC + #5] ;->0x39c :=0x40200000 38a: 5d 98 LD.W R3, [R5 + #1] ..\KF32Lib\src\kf32a156_int.c:272 CHECK_RESTRICTION(CHECK_FUNCTIONAL_STATE(NewState)); if(Peripheral <= INT_SysTick) { /*---------------- 设置INT_EIE0寄存器 ----------------*/ tmask = ((uint32_t)1 << Peripheral); 38c: 41 10 MOV R4, #1 38e: 24 da LSL R4, R4, R0 ..\KF32Lib\src\kf32a156_int.c:274 tmpreg = ((uint32_t)NewState << Peripheral); INT_EIE0 = SFR_Config(INT_EIE0, ~tmask, tmpreg); 390: 44 68 NOT R4, R4 KF32A156.h:14158 392: e4 d4 ANL R4, R4, R3 ..\KF32Lib\src\kf32a156_int.c:273 if(Peripheral <= INT_SysTick) { /*---------------- 设置INT_EIE0寄存器 ----------------*/ tmask = ((uint32_t)1 << Peripheral); tmpreg = ((uint32_t)NewState << Peripheral); 394: 01 da LSL R0, R1, R0 KF32A156.h:14158 396: 0c d6 ORL R1, R4, R0 ..\KF32Lib\src\kf32a156_int.c:274 INT_EIE0 = SFR_Config(INT_EIE0, ~tmask, tmpreg); 398: 69 a0 ST.W [R5 + #1], R1 ..\KF32Lib\src\kf32a156_int.c:294 } else { ; } } 39a: 1d 5c JMP LR 39c: 00 00 20 40 .long 0x40200000 ->1075838976 [!!!@2@:NOP @@: LD R0, [PC + #32] ;->0x41c :=0xc2ad4206 000003a0 : INT_Clear_Interrupt_Flag(): ..\KF32Lib\src\kf32a156_int.c:402 uint32_t tmask = 0; /* 参数校验 */ CHECK_RESTRICTION(CHECK_PERIPHERAL_INTERRUPT_INDEX(Peripheral)); if(Peripheral <= INT_SysTick) 3a0: 0f 38 CMP R0, #15 3a2: 1d f9 JLS $+29 ;->0x3dc ..\KF32Lib\src\kf32a156_int.c:408 { /*---------------- 读取INT_EIF0寄存器 ----------------*/ tmask = ((uint32_t)1 << Peripheral); INT_EIF0 = SFR_Config(INT_EIF0,~tmask,0); } else if(Peripheral <= INT_SPI1) 3a4: 0f 3a CMP R0, #47 3a6: 0f f9 JLS $+15 ;->0x3c4 ..\KF32Lib\src\kf32a156_int.c:414 { /*---------------- 读取INT_EIF1寄存器 ----------------*/ tmask = ((uint32_t)1 << (Peripheral - INT_WWDT)); INT_EIF1 = SFR_Config(INT_EIF1,~tmask,0); } else if(Peripheral <= INT_USART7) 3a8: 0f 3c CMP R0, #79 3aa: 09 f8 JHI $+9 ;->0x3bc ..\KF32Lib\src\kf32a156_int.c:418 { /*---------------- 读取INT_EIF2寄存器 ----------------*/ tmask = ((uint32_t)1 << (Peripheral - INT_DMA1)); INT_EIF2 = SFR_Config(INT_EIF2,~tmask,0); 3ac: 05 45 LD R5, [PC + #5] ;->0x3c0 :=0x40200000 3ae: e5 9a LD.W R4, [R5 + #11] ..\KF32Lib\src\kf32a156_int.c:417 INT_EIF1 = SFR_Config(INT_EIF1,~tmask,0); } else if(Peripheral <= INT_USART7) { /*---------------- 读取INT_EIF2寄存器 ----------------*/ tmask = ((uint32_t)1 << (Peripheral - INT_DMA1)); 3b0: 00 33 SUB R0, #48 3b2: 31 10 MOV R3, #1 3b4: 03 da LSL R0, R3, R0 ..\KF32Lib\src\kf32a156_int.c:418 INT_EIF2 = SFR_Config(INT_EIF2,~tmask,0); 3b6: 00 68 NOT R0, R0 KF32A156.h:14158 3b8: 00 d5 ANL R0, R0, R4 ..\KF32Lib\src\kf32a156_int.c:418 3ba: e8 a2 ST.W [R5 + #11], R0 ..\KF32Lib\src\kf32a156_int.c:424 } else { ; } } 3bc: 1d 5c JMP LR 3be: 00 00 NOP NOP 3c0: 00 00 20 40 .long 0x40200000 ->1075838976 [!!!@2@:NOP @@: LD R0, [PC + #32] ;->0x440 :=0xc1247a23 ..\KF32Lib\src\kf32a156_int.c:412 } else if(Peripheral <= INT_SPI1) { /*---------------- 读取INT_EIF1寄存器 ----------------*/ tmask = ((uint32_t)1 << (Peripheral - INT_WWDT)); INT_EIF1 = SFR_Config(INT_EIF1,~tmask,0); 3c4: 05 45 LD R5, [PC + #5] ;->0x3d8 :=0x40200000 3c6: 65 9a LD.W R4, [R5 + #9] ..\KF32Lib\src\kf32a156_int.c:411 INT_EIF0 = SFR_Config(INT_EIF0,~tmask,0); } else if(Peripheral <= INT_SPI1) { /*---------------- 读取INT_EIF1寄存器 ----------------*/ tmask = ((uint32_t)1 << (Peripheral - INT_WWDT)); 3c8: 00 31 SUB R0, #16 3ca: 31 10 MOV R3, #1 3cc: 03 da LSL R0, R3, R0 ..\KF32Lib\src\kf32a156_int.c:412 INT_EIF1 = SFR_Config(INT_EIF1,~tmask,0); 3ce: 00 68 NOT R0, R0 KF32A156.h:14158 3d0: 00 d5 ANL R0, R0, R4 ..\KF32Lib\src\kf32a156_int.c:412 3d2: 68 a2 ST.W [R5 + #9], R0 ..\KF32Lib\src\kf32a156_int.c:424 } else { ; } } 3d4: 1d 5c JMP LR 3d6: 00 00 NOP NOP 3d8: 00 00 20 40 .long 0x40200000 ->1075838976 [!!!@2@:NOP @@: LD R0, [PC + #32] ;->0x458 :=0xd4da103f ..\KF32Lib\src\kf32a156_int.c:406 if(Peripheral <= INT_SysTick) { /*---------------- 读取INT_EIF0寄存器 ----------------*/ tmask = ((uint32_t)1 << Peripheral); INT_EIF0 = SFR_Config(INT_EIF0,~tmask,0); 3dc: 04 45 LD R5, [PC + #4] ;->0x3ec :=0x40200000 3de: e5 99 LD.W R4, [R5 + #7] ..\KF32Lib\src\kf32a156_int.c:405 CHECK_RESTRICTION(CHECK_PERIPHERAL_INTERRUPT_INDEX(Peripheral)); if(Peripheral <= INT_SysTick) { /*---------------- 读取INT_EIF0寄存器 ----------------*/ tmask = ((uint32_t)1 << Peripheral); 3e0: 31 10 MOV R3, #1 3e2: 03 da LSL R0, R3, R0 ..\KF32Lib\src\kf32a156_int.c:406 INT_EIF0 = SFR_Config(INT_EIF0,~tmask,0); 3e4: 00 68 NOT R0, R0 KF32A156.h:14158 3e6: 00 d5 ANL R0, R0, R4 ..\KF32Lib\src\kf32a156_int.c:406 3e8: e8 a1 ST.W [R5 + #7], R0 ..\KF32Lib\src\kf32a156_int.c:424 } else { ; } } 3ea: 1d 5c JMP LR 3ec: 00 00 20 40 .long 0x40200000 ->1075838976 [!!!@2@:NOP @@: LD R0, [PC + #32] ;->0x46c :=0xdb1bd65b 000003f0 : INT_Interrupt_Priority_Config(): ..\KF32Lib\src\kf32a156_int.c:448 uint32_t regoffset = 0; uint32_t bitoffset = 0; uint32_t priorityconfig = 0; /*--------- 获取INT_CTL0寄存器的PRIGROUP位 ---------*/ tmpreg = INT_CTL0; 3f0: 10 45 LD R5, [PC + #16] ;->0x430 :=0x40200000 3f2: 45 82 LD.W R4, [R5] ..\KF32Lib\src\kf32a156_int.c:449 tmpreg &= INT_CTL0_PRIGROUP; 3f4: 56 10 MOV R5, #6 3f6: 6c d5 ANL R5, R4, R5 ..\KF32Lib\src\kf32a156_int.c:456 /* 参数校验 */ CHECK_RESTRICTION(CHECK_PERIPHERAL_INTERRUPT_INDEX(Peripheral)); CHECK_RESTRICTION(CHECK_PRIORITY_CONFIG(tmpreg, Preemption, SubPriority)); /*--------- 获取中断优先级控制位的值 ---------*/ switch (tmpreg) 3f8: 52 38 CMP R5, #2 3fa: 33 f0 JZ $+51 ;->0x460 3fc: 52 38 CMP R5, #2 3fe: 1d f9 JLS $+29 ;->0x438 400: 54 38 CMP R5, #4 402: 38 f0 JZ $+56 ;->0x472 404: 56 38 CMP R5, #6 406: 25 f0 JZ $+37 ;->0x450 408: 43 10 MOV R4, #3 40a: 20 d5 ANL R4, R0, R4 40c: 23 7a LSL R4, #3 40e: 24 c1 ADD R4, R4, #4 410: 30 10 MOV R3, #0 ..\KF32Lib\src\kf32a156_int.c:476 CHECK_RESTRICTION(0); break; } /*--------- 配置中断优先级控制位 ---------*/ if (Peripheral <= INT_USART7) 412: 0f 3c CMP R0, #79 414: 06 f8 JHI $+6 ;->0x420 ..\KF32Lib\src\kf32a156_int.c:480 { /*---------------- 设置INT_IPx(x=0~18)寄存器 ----------------*/ /* 获取中断优先级寄存器地址 */ regoffset = (Peripheral - INT_Reserved4) >> 2; 416: 28 cd SUB R5, R0, #4 418: 2a 7c LSR R5, #2 ..\KF32Lib\src\kf32a156_int.c:482 tmpreg = (uint32_t)&INT_IP0; tmpreg = tmpreg + (regoffset << 2); 41a: 2a 7a LSL R5, #2 41c: 06 42 LD R2, [PC + #6] ;->0x434 :=0x40200034 41e: ad c2 ADD R5, R5, R2 ..\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, 420: 25 82 LD.W R2, [R5] ..\KF32Lib\src\kf32a156_int.c:493 ~(0xF << bitoffset), 422: 1f 10 MOV R1, #15 424: 21 db LSL R4, R1, R4 426: 44 68 NOT R4, R4 KF32A156.h:14158 428: 22 d5 ANL R4, R2, R4 42a: e4 d6 ORL R4, R4, R3 ..\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, 42c: 54 85 ST.W [R5], R4 ..\KF32Lib\src\kf32a156_int.c:495 ~(0xF << bitoffset), priorityconfig << bitoffset); } 42e: 1d 5c JMP LR 430: 00 00 20 40 .long 0x40200000 ->1075838976 [!!!@2@:NOP @@: LD R0, [PC + #32] ;->0x4b0 :=0x5c1d 434: 34 00 20 40 .long 0x40200034 ->1075839028 ..\KF32Lib\src\kf32a156_int.c:456 /* 参数校验 */ CHECK_RESTRICTION(CHECK_PERIPHERAL_INTERRUPT_INDEX(Peripheral)); CHECK_RESTRICTION(CHECK_PRIORITY_CONFIG(tmpreg, Preemption, SubPriority)); /*--------- 获取中断优先级控制位的值 ---------*/ switch (tmpreg) 438: 50 38 CMP R5, #0 43a: e7 f1 JNZ $-25 ;->0x408 43c: 43 10 MOV R4, #3 43e: 20 d5 ANL R4, R0, R4 440: 23 7a LSL R4, #3 442: 24 c1 ADD R4, R4, #4 ..\KF32Lib\src\kf32a156_int.c:459 { case INT_PRIORITY_GROUP_3VS1: priorityconfig = (Preemption << 1) | (SubPriority & 0x1); 444: 31 10 MOV R3, #1 446: da d4 ANL R3, R2, R3 448: 49 c2 ADD R1, R1, R1 44a: 5b d6 ORL R3, R3, R1 44c: 1b db LSL R3, R3, R4 ..\KF32Lib\src\kf32a156_int.c:460 break; 44e: e2 07 SJMP $-30 ;->0x412 450: 43 10 MOV R4, #3 452: 20 d5 ANL R4, R0, R4 454: 23 7a LSL R4, #3 456: 24 c1 ADD R4, R4, #4 ..\KF32Lib\src\kf32a156_int.c:468 break; case INT_PRIORITY_GROUP_1VS3: priorityconfig = (Preemption << 3) | (SubPriority & 0x7); break; case INT_PRIORITY_GROUP_0VS4: priorityconfig = SubPriority & 0xF; 458: 3f 10 MOV R3, #15 45a: da d4 ANL R3, R2, R3 45c: 1b db LSL R3, R3, R4 ..\KF32Lib\src\kf32a156_int.c:469 break; 45e: da 07 SJMP $-38 ;->0x412 460: 33 10 MOV R3, #3 462: e0 d4 ANL R4, R0, R3 464: e4 da LSL R4, R4, R3 466: 24 c1 ADD R4, R4, #4 ..\KF32Lib\src\kf32a156_int.c:462 { case INT_PRIORITY_GROUP_3VS1: priorityconfig = (Preemption << 1) | (SubPriority & 0x1); break; case INT_PRIORITY_GROUP_2VS2: priorityconfig = (Preemption << 2) | (SubPriority & 0x3); 468: da d4 ANL R3, R2, R3 46a: 0a 7a LSL R1, #2 46c: 5b d6 ORL R3, R3, R1 46e: 1b db LSL R3, R3, R4 ..\KF32Lib\src\kf32a156_int.c:463 break; 470: d1 07 SJMP $-47 ;->0x412 472: 43 10 MOV R4, #3 474: 20 d5 ANL R4, R0, R4 476: 23 7a LSL R4, #3 478: 24 c1 ADD R4, R4, #4 ..\KF32Lib\src\kf32a156_int.c:465 case INT_PRIORITY_GROUP_1VS3: priorityconfig = (Preemption << 3) | (SubPriority & 0x7); 47a: 37 10 MOV R3, #7 47c: da d4 ANL R3, R2, R3 47e: 0b 7a LSL R1, #3 480: 5b d6 ORL R3, R3, R1 482: 1b db LSL R3, R3, R4 ..\KF32Lib\src\kf32a156_int.c:466 break; 484: c7 07 SJMP $-57 ;->0x412 ... 00000488 : OSC_LFCK_Division_Config(): ..\KF32Lib\src\kf32a156_osc.c:198 /* 参数校验 */ CHECK_RESTRICTION(CHECK_LFCK_DIVISION(LFDivision)); /*---------------- 设置OSC_CTL0寄存器LFCKDIV位 ----------------*/ tmpreg = LFDivision << OSC_CTL0_LFCKDIV0_POS; OSC_CTL0 = SFR_Config (OSC_CTL0, ~OSC_CTL0_LFCKDIV, tmpreg); 488: 51 10 MOV R5, #1 48a: ae 7b LSL R5, #30 48c: 45 82 LD.W R4, [R5] ..\KF32Lib\src\kf32a156_osc.c:197 /* 参数校验 */ CHECK_RESTRICTION(CHECK_LFCK_DIVISION(LFDivision)); /*---------------- 设置OSC_CTL0寄存器LFCKDIV位 ----------------*/ tmpreg = LFDivision << OSC_CTL0_LFCKDIV0_POS; 48e: 80 7b LSL R0, #24 KF32A156.h:14158 490: 03 43 LD R3, [PC + #3] ;->0x49c :=0xf8ffffff 492: e4 d4 ANL R4, R4, R3 494: 20 d7 ORL R4, R0, R4 ..\KF32Lib\src\kf32a156_osc.c:198 OSC_CTL0 = SFR_Config (OSC_CTL0, ~OSC_CTL0_LFCKDIV, tmpreg); 496: 54 85 ST.W [R5], R4 ..\KF32Lib\src\kf32a156_osc.c:199 } 498: 1d 5c JMP LR 49a: 00 00 NOP NOP 49c: ff ff ff f8 .long 0xf8ffffff ->-117440513 000004a0 : OSC_HFCK_Division_Config(): ..\KF32Lib\src\kf32a156_osc.c:225 /* 参数校验 */ CHECK_RESTRICTION(CHECK_HFCK_DIVISION(HFDivision)); /*---------------- 设置OSC_CTL0寄存器HFCKDIV位 ----------------*/ tmpreg = HFDivision << OSC_CTL0_HFCKDIV0_POS; OSC_CTL0 = SFR_Config (OSC_CTL0, ~OSC_CTL0_HFCKDIV, tmpreg); 4a0: 51 10 MOV R5, #1 4a2: ae 7b LSL R5, #30 4a4: 45 82 LD.W R4, [R5] ..\KF32Lib\src\kf32a156_osc.c:224 /* 参数校验 */ CHECK_RESTRICTION(CHECK_HFCK_DIVISION(HFDivision)); /*---------------- 设置OSC_CTL0寄存器HFCKDIV位 ----------------*/ tmpreg = HFDivision << OSC_CTL0_HFCKDIV0_POS; 4a6: 04 7b LSL R0, #20 KF32A156.h:14158 4a8: 03 43 LD R3, [PC + #3] ;->0x4b4 :=0xff0fffff 4aa: e4 d4 ANL R4, R4, R3 4ac: 20 d7 ORL R4, R0, R4 ..\KF32Lib\src\kf32a156_osc.c:225 OSC_CTL0 = SFR_Config (OSC_CTL0, ~OSC_CTL0_HFCKDIV, tmpreg); 4ae: 54 85 ST.W [R5], R4 ..\KF32Lib\src\kf32a156_osc.c:226 } 4b0: 1d 5c JMP LR 4b2: 00 00 NOP NOP 4b4: ff ff 0f ff .long 0xff0fffff ->-15728641 000004b8 : OSC_SCK_Division_Config(): ..\KF32Lib\src\kf32a156_osc.c:270 /* 参数校验 */ CHECK_RESTRICTION(CHECK_SCLK_DIVISION(SclkDivision)); /*---------------- 设置OSC_CTL0寄存器SCKDIV位 ----------------*/ tmpreg = SclkDivision << OSC_CTL0_SCKDIV0_POS; OSC_CTL0 = SFR_Config (OSC_CTL0, ~OSC_CTL0_SCKDIV, tmpreg); 4b8: 51 10 MOV R5, #1 4ba: ae 7b LSL R5, #30 4bc: 45 82 LD.W R4, [R5] ..\KF32Lib\src\kf32a156_osc.c:269 /* 参数校验 */ CHECK_RESTRICTION(CHECK_SCLK_DIVISION(SclkDivision)); /*---------------- 设置OSC_CTL0寄存器SCKDIV位 ----------------*/ tmpreg = SclkDivision << OSC_CTL0_SCKDIV0_POS; 4be: 00 7b LSL R0, #16 KF32A156.h:14158 4c0: 03 43 LD R3, [PC + #3] ;->0x4cc :=0xfff8ffff 4c2: e4 d4 ANL R4, R4, R3 4c4: 20 d7 ORL R4, R0, R4 ..\KF32Lib\src\kf32a156_osc.c:270 OSC_CTL0 = SFR_Config (OSC_CTL0, ~OSC_CTL0_SCKDIV, tmpreg); 4c6: 54 85 ST.W [R5], R4 ..\KF32Lib\src\kf32a156_osc.c:271 } 4c8: 1d 5c JMP LR 4ca: 00 00 NOP NOP 4cc: ff ff f8 ff .long 0xfff8ffff ->-00458753 000004d0 : OSC_PLL_Input_Source_Config(): ..\KF32Lib\src\kf32a156_osc.c:289 /*---------------- 设置OSC_CTL0寄存器PLL0CKS位 ----------------*/ if (NewState != PLL_INPUT_INTHF) { /* 选择EXTHF作为PLL输入时钟 */ SFR_SET_BIT_ASM(OSC_CTL0, OSC_CTL0_PLLCKS_POS); 4d0: 51 10 MOV R5, #1 4d2: ae 7b LSL R5, #30 ..\KF32Lib\src\kf32a156_osc.c:286 { /* 参数校验 */ CHECK_RESTRICTION(CHECK_PLL_INPUT(NewState)); /*---------------- 设置OSC_CTL0寄存器PLL0CKS位 ----------------*/ if (NewState != PLL_INPUT_INTHF) 4d4: 00 38 CMP R0, #0 4d6: 03 f1 JNZ $+3 ;->0x4dc ..\KF32Lib\src\kf32a156_osc.c:294 SFR_SET_BIT_ASM(OSC_CTL0, OSC_CTL0_PLLCKS_POS); } else { /* 选择INTHF作为PLL输入时钟 */ SFR_CLR_BIT_ASM(OSC_CTL0, OSC_CTL0_PLLCKS_POS); 4d8: ac 4e CLR [R5], #12 ..\KF32Lib\src\kf32a156_osc.c:296 } } 4da: 1d 5c JMP LR ..\KF32Lib\src\kf32a156_osc.c:289 /*---------------- 设置OSC_CTL0寄存器PLL0CKS位 ----------------*/ if (NewState != PLL_INPUT_INTHF) { /* 选择EXTHF作为PLL输入时钟 */ SFR_SET_BIT_ASM(OSC_CTL0, OSC_CTL0_PLLCKS_POS); 4dc: ac 4c SET [R5], #12 ..\KF32Lib\src\kf32a156_osc.c:296 else { /* 选择INTHF作为PLL输入时钟 */ SFR_CLR_BIT_ASM(OSC_CTL0, OSC_CTL0_PLLCKS_POS); } } 4de: 1d 5c JMP LR 000004e0 : OSC_HFCK_Source_Config(): ..\KF32Lib\src\kf32a156_osc.c:316 /* 参数校验 */ CHECK_RESTRICTION(CHECK_HFCK_SOURCE(HFSource)); /*---------------- 设置OSC_CTL0寄存器HFCKS位 ----------------*/ tmpreg = HFSource << OSC_CTL0_HFCKS0_POS; OSC_CTL0 = SFR_Config (OSC_CTL0, ~OSC_CTL0_HFCKS, tmpreg); 4e0: 51 10 MOV R5, #1 4e2: ae 7b LSL R5, #30 4e4: 45 82 LD.W R4, [R5] ..\KF32Lib\src\kf32a156_osc.c:315 /* 参数校验 */ CHECK_RESTRICTION(CHECK_HFCK_SOURCE(HFSource)); /*---------------- 设置OSC_CTL0寄存器HFCKS位 ----------------*/ tmpreg = HFSource << OSC_CTL0_HFCKS0_POS; 4e6: 81 7a LSL R0, #9 KF32A156.h:14158 4e8: 03 43 LD R3, [PC + #3] ;->0x4f4 :=0xfffff1ff 4ea: e4 d4 ANL R4, R4, R3 4ec: 20 d7 ORL R4, R0, R4 ..\KF32Lib\src\kf32a156_osc.c:316 OSC_CTL0 = SFR_Config (OSC_CTL0, ~OSC_CTL0_HFCKS, tmpreg); 4ee: 54 85 ST.W [R5], R4 ..\KF32Lib\src\kf32a156_osc.c:317 } 4f0: 1d 5c JMP LR 4f2: 00 00 NOP NOP 4f4: ff f1 ff ff .long 0xfffff1ff ->-00003585 000004f8 : OSC_HFCK_Enable(): ..\KF32Lib\src\kf32a156_osc.c:334 /*---------------- 设置OSC_CTL0寄存器HFCKEN位 ----------------*/ if (NewState != FALSE) { /* HFCLK时钟信号允许 */ SFR_SET_BIT_ASM(OSC_CTL0, OSC_CTL0_HFCKEN_POS); 4f8: 51 10 MOV R5, #1 4fa: ae 7b LSL R5, #30 ..\KF32Lib\src\kf32a156_osc.c:331 { /* 参数校验 */ CHECK_RESTRICTION(CHECK_FUNCTIONAL_STATE(NewState)); /*---------------- 设置OSC_CTL0寄存器HFCKEN位 ----------------*/ if (NewState != FALSE) 4fc: 00 38 CMP R0, #0 4fe: 03 f1 JNZ $+3 ;->0x504 ..\KF32Lib\src\kf32a156_osc.c:339 SFR_SET_BIT_ASM(OSC_CTL0, OSC_CTL0_HFCKEN_POS); } else { /* HFCLK时钟信号禁止 */ SFR_CLR_BIT_ASM(OSC_CTL0, OSC_CTL0_HFCKEN_POS); 500: a8 4e CLR [R5], #8 ..\KF32Lib\src\kf32a156_osc.c:341 } } 502: 1d 5c JMP LR ..\KF32Lib\src\kf32a156_osc.c:334 /*---------------- 设置OSC_CTL0寄存器HFCKEN位 ----------------*/ if (NewState != FALSE) { /* HFCLK时钟信号允许 */ SFR_SET_BIT_ASM(OSC_CTL0, OSC_CTL0_HFCKEN_POS); 504: a8 4c SET [R5], #8 ..\KF32Lib\src\kf32a156_osc.c:341 else { /* HFCLK时钟信号禁止 */ SFR_CLR_BIT_ASM(OSC_CTL0, OSC_CTL0_HFCKEN_POS); } } 506: 1d 5c JMP LR 00000508 : OSC_LFCK_Source_Config(): ..\KF32Lib\src\kf32a156_osc.c:359 /*---------------- 设置OSC_CTL0寄存器LFCKS位 ----------------*/ if (NewState != LFCK_INPUT_INTLF) { /* 选择EXTLF作为LFCLK时钟 */ SFR_SET_BIT_ASM(OSC_CTL0, OSC_CTL0_LFCKS_POS); 508: 51 10 MOV R5, #1 50a: ae 7b LSL R5, #30 ..\KF32Lib\src\kf32a156_osc.c:356 { /* 参数校验 */ CHECK_RESTRICTION(CHECK_LFCK_INPUT(NewState)); /*---------------- 设置OSC_CTL0寄存器LFCKS位 ----------------*/ if (NewState != LFCK_INPUT_INTLF) 50c: 00 38 CMP R0, #0 50e: 03 f1 JNZ $+3 ;->0x514 ..\KF32Lib\src\kf32a156_osc.c:364 SFR_SET_BIT_ASM(OSC_CTL0, OSC_CTL0_LFCKS_POS); } else { /* 选择INTLF作为LFCLK时钟 */ SFR_CLR_BIT_ASM(OSC_CTL0, OSC_CTL0_LFCKS_POS); 510: 2e 4e CLR [R5], #6 ..\KF32Lib\src\kf32a156_osc.c:366 } } 512: 1d 5c JMP LR ..\KF32Lib\src\kf32a156_osc.c:359 /*---------------- 设置OSC_CTL0寄存器LFCKS位 ----------------*/ if (NewState != LFCK_INPUT_INTLF) { /* 选择EXTLF作为LFCLK时钟 */ SFR_SET_BIT_ASM(OSC_CTL0, OSC_CTL0_LFCKS_POS); 514: 2e 4c SET [R5], #6 ..\KF32Lib\src\kf32a156_osc.c:366 else { /* 选择INTLF作为LFCLK时钟 */ SFR_CLR_BIT_ASM(OSC_CTL0, OSC_CTL0_LFCKS_POS); } } 516: 1d 5c JMP LR 00000518 : OSC_LFCK_Enable(): ..\KF32Lib\src\kf32a156_osc.c:383 /*---------------- 设置OSC_CTL0寄存器LFCKEN位 ----------------*/ if (NewState != FALSE) { /* LFCLK时钟信号允许 */ SFR_SET_BIT_ASM(OSC_CTL0, OSC_CTL0_LFCKEN_POS); 518: 51 10 MOV R5, #1 51a: ae 7b LSL R5, #30 ..\KF32Lib\src\kf32a156_osc.c:380 { /* 参数校验 */ CHECK_RESTRICTION(CHECK_FUNCTIONAL_STATE(NewState)); /*---------------- 设置OSC_CTL0寄存器LFCKEN位 ----------------*/ if (NewState != FALSE) 51c: 00 38 CMP R0, #0 51e: 03 f1 JNZ $+3 ;->0x524 ..\KF32Lib\src\kf32a156_osc.c:388 SFR_SET_BIT_ASM(OSC_CTL0, OSC_CTL0_LFCKEN_POS); } else { /* LFCLK时钟信号禁止 */ SFR_CLR_BIT_ASM(OSC_CTL0, OSC_CTL0_LFCKEN_POS); 520: 2c 4e CLR [R5], #4 ..\KF32Lib\src\kf32a156_osc.c:390 } } 522: 1d 5c JMP LR ..\KF32Lib\src\kf32a156_osc.c:383 /*---------------- 设置OSC_CTL0寄存器LFCKEN位 ----------------*/ if (NewState != FALSE) { /* LFCLK时钟信号允许 */ SFR_SET_BIT_ASM(OSC_CTL0, OSC_CTL0_LFCKEN_POS); 524: 2c 4c SET [R5], #4 ..\KF32Lib\src\kf32a156_osc.c:390 else { /* LFCLK时钟信号禁止 */ SFR_CLR_BIT_ASM(OSC_CTL0, OSC_CTL0_LFCKEN_POS); } } 526: 1d 5c JMP LR 00000528 : OSC_SCK_Source_Config(): ..\KF32Lib\src\kf32a156_osc.c:412 /* 参数校验 */ CHECK_RESTRICTION(CHECK_SCLK_SOURCE(SclkSource)); /*---------------- 设置OSC_CTL0寄存器SCKS位 ----------------*/ tmpreg = SclkSource << OSC_CTL0_SCKS0_POS; OSC_CTL0 = SFR_Config (OSC_CTL0, ~OSC_CTL0_SCKS, tmpreg); 528: 51 10 MOV R5, #1 52a: ae 7b LSL R5, #30 52c: 45 82 LD.W R4, [R5] ..\KF32Lib\src\kf32a156_osc.c:411 /* 参数校验 */ CHECK_RESTRICTION(CHECK_SCLK_SOURCE(SclkSource)); /*---------------- 设置OSC_CTL0寄存器SCKS位 ----------------*/ tmpreg = SclkSource << OSC_CTL0_SCKS0_POS; 52e: 00 c2 ADD R0, R0, R0 KF32A156.h:14158 530: 3e 10 MOV R3, #14 532: 33 68 NOT R3, R3 534: e4 d4 ANL R4, R4, R3 536: 20 d7 ORL R4, R0, R4 ..\KF32Lib\src\kf32a156_osc.c:412 OSC_CTL0 = SFR_Config (OSC_CTL0, ~OSC_CTL0_SCKS, tmpreg); 538: 54 85 ST.W [R5], R4 ..\KF32Lib\src\kf32a156_osc.c:413 } 53a: 1d 5c JMP LR 0000053c : OSC_PLL_Multiple_Value_Select(): ..\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;} 53c: 28 38 CMP R2, #8 53e: 19 f0 JZ $+25 ;->0x570 ..\KF32Lib\src\kf32a156_osc.c:600 else if(PLLmultiple_NO==4){PLLmultiple_NO=2;} 540: 24 38 CMP R2, #4 542: 19 f0 JZ $+25 ;->0x574 ..\KF32Lib\src\kf32a156_osc.c:601 else if(PLLmultiple_NO==2){PLLmultiple_NO=1;} 544: 22 38 CMP R2, #2 546: 1a f0 JZ $+26 ;->0x57a ..\KF32Lib\src\kf32a156_osc.c:602 else if(PLLmultiple_NO==1){PLLmultiple_NO=0;} 548: 40 10 MOV R4, #0 54a: 21 38 CMP R2, #1 54c: 03 f0 JZ $+3 ;->0x552 54e: 54 11 MOV R5, #20 550: 62 db LSL R4, R2, R5 ..\KF32Lib\src\kf32a156_osc.c:609 /*---------------- 设置PLL_CTL寄存器OD位N位M位 ----------------*/ tmpreg = ((PLLmultiple_M << PLL_CTL_M0_POS) \ | (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); 552: 06 45 LD R5, [PC + #6] ;->0x568 :=0x40002580 554: 25 82 LD.W R2, [R5] ..\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) \ 556: 02 7a LSL R0, #2 KF32A156.h:14158 558: 05 43 LD R3, [PC + #5] ;->0x56c :=0xffc00003 55a: da d4 ANL R3, R2, R3 ..\KF32Lib\src\kf32a156_osc.c:606 | (PLLmultiple_N << PLL_CTL_N0_POS) \ 55c: c0 d6 ORL R0, R0, R3 55e: 08 7b LSL R1, #16 ..\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) \ 560: 48 d6 ORL R1, R0, R1 KF32A156.h:14158 562: 21 d7 ORL R4, R1, R4 ..\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); 564: 54 85 ST.W [R5], R4 ..\KF32Lib\src\kf32a156_osc.c:610 } 566: 1d 5c JMP LR 568: 80 25 00 40 .long 0x40002580 ->1073751424 [!!!@2@:ST.W [SP + #128], R5 @@: LD R0, [PC + #0] ;->0x568 :=0x40002580 56c: 03 00 c0 ff .long 0xffc00003 ->-04194301 ..\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;} 570: 04 44 LD R4, [PC + #4] ;->0x580 :=0x300000 572: f0 07 SJMP $-16 ;->0x552 ..\KF32Lib\src\kf32a156_osc.c:600 else if(PLLmultiple_NO==4){PLLmultiple_NO=2;} 574: 41 10 MOV R4, #1 576: 25 7b LSL R4, #21 578: ed 07 SJMP $-19 ;->0x552 ..\KF32Lib\src\kf32a156_osc.c:601 else if(PLLmultiple_NO==2){PLLmultiple_NO=1;} 57a: 41 10 MOV R4, #1 57c: 24 7b LSL R4, #20 57e: ea 07 SJMP $-22 ;->0x552 580: 00 00 30 00 .long 0x00300000 ->003145728 00000584 : 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); 584: 02 45 LD R5, [PC + #2] ;->0x58c :=0x40002580 586: 28 4c SET [R5], #0 ..\KF32Lib\src\kf32a156_osc.c:621 } 588: 1d 5c JMP LR 58a: 00 00 NOP NOP 58c: 80 25 00 40 .long 0x40002580 ->1073751424 [!!!@2@:ST.W [SP + #128], R5 @@: LD R0, [PC + #0] ;->0x58c :=0x40002580 00000590 : OSC_PLL_Start_Delay_Config(): ..\KF32Lib\src\kf32a156_osc.c:647 /* 参数校验 */ CHECK_RESTRICTION(CHECK_PLL_START_DELAY(PLLDelay)); /*---------------- 设置OSC_CTL2寄存器PLLDLY位 ----------------*/ tmpreg = PLLDelay << OSC_CTL2_PLLDLY0_POS; OSC_CTL2 = SFR_Config (OSC_CTL2, ~OSC_CTL2_PLLDLY, tmpreg); 590: 51 10 MOV R5, #1 592: ae 7b LSL R5, #30 594: e5 98 LD.W R4, [R5 + #3] ..\KF32Lib\src\kf32a156_osc.c:646 /* 参数校验 */ CHECK_RESTRICTION(CHECK_PLL_START_DELAY(PLLDelay)); /*---------------- 设置OSC_CTL2寄存器PLLDLY位 ----------------*/ tmpreg = PLLDelay << OSC_CTL2_PLLDLY0_POS; 596: 80 7b LSL R0, #24 KF32A156.h:14158 598: 03 43 LD R3, [PC + #3] ;->0x5a4 :=0xf0ffffff 59a: e4 d4 ANL R4, R4, R3 59c: 20 d7 ORL R4, R0, R4 ..\KF32Lib\src\kf32a156_osc.c:647 OSC_CTL2 = SFR_Config (OSC_CTL2, ~OSC_CTL2_PLLDLY, tmpreg); 59e: ec a0 ST.W [R5 + #3], R4 ..\KF32Lib\src\kf32a156_osc.c:648 } 5a0: 1d 5c JMP LR 5a2: 00 00 NOP NOP 5a4: ff ff ff f0 .long 0xf0ffffff ->-251658241 000005a8 : OSC_PLL_Software_Enable(): ..\KF32Lib\src\kf32a156_osc.c:741 /*---------------- 设置OSC_CTL2寄存器PLLSWEN位 ----------------*/ if (NewState != FALSE) { /* 使能PLL工作 */ SFR_SET_BIT_ASM(OSC_CTL2, OSC_CTL2_PLLSWEN_POS); 5a8: 03 45 LD R5, [PC + #3] ;->0x5b4 :=0x4000000c ..\KF32Lib\src\kf32a156_osc.c:738 { /* 参数校验 */ CHECK_RESTRICTION(CHECK_FUNCTIONAL_STATE(NewState)); /*---------------- 设置OSC_CTL2寄存器PLLSWEN位 ----------------*/ if (NewState != FALSE) 5aa: 00 38 CMP R0, #0 5ac: 06 f1 JNZ $+6 ;->0x5b8 ..\KF32Lib\src\kf32a156_osc.c:746 SFR_SET_BIT_ASM(OSC_CTL2, OSC_CTL2_PLLSWEN_POS); } else { /* 无效 */ SFR_CLR_BIT_ASM(OSC_CTL2, OSC_CTL2_PLLSWEN_POS); 5ae: 2c 4e CLR [R5], #4 ..\KF32Lib\src\kf32a156_osc.c:748 } } 5b0: 1d 5c JMP LR 5b2: 00 00 NOP NOP 5b4: 0c 00 00 40 .long 0x4000000c ->1073741836 ..\KF32Lib\src\kf32a156_osc.c:741 /*---------------- 设置OSC_CTL2寄存器PLLSWEN位 ----------------*/ if (NewState != FALSE) { /* 使能PLL工作 */ SFR_SET_BIT_ASM(OSC_CTL2, OSC_CTL2_PLLSWEN_POS); 5b8: 2c 4c SET [R5], #4 ..\KF32Lib\src\kf32a156_osc.c:748 else { /* 无效 */ SFR_CLR_BIT_ASM(OSC_CTL2, OSC_CTL2_PLLSWEN_POS); } } 5ba: 1d 5c JMP LR 000005bc : OSC_INTHF_Software_Enable(): ..\KF32Lib\src\kf32a156_osc.c:810 /*---------------- 设置OSC_CTL2寄存器INTHFSWEN位 ----------------*/ if (NewState != FALSE) { /* 使能内部高频振荡器工作 */ SFR_SET_BIT_ASM(OSC_CTL2, OSC_CTL2_INTHFSWEN_POS); 5bc: 03 45 LD R5, [PC + #3] ;->0x5c8 :=0x4000000c ..\KF32Lib\src\kf32a156_osc.c:807 { /* 参数校验 */ CHECK_RESTRICTION(CHECK_FUNCTIONAL_STATE(NewState)); /*---------------- 设置OSC_CTL2寄存器INTHFSWEN位 ----------------*/ if (NewState != FALSE) 5be: 00 38 CMP R0, #0 5c0: 06 f1 JNZ $+6 ;->0x5cc ..\KF32Lib\src\kf32a156_osc.c:815 SFR_SET_BIT_ASM(OSC_CTL2, OSC_CTL2_INTHFSWEN_POS); } else { /* 无效 */ SFR_CLR_BIT_ASM(OSC_CTL2, OSC_CTL2_INTHFSWEN_POS); 5c2: 29 4e CLR [R5], #1 ..\KF32Lib\src\kf32a156_osc.c:817 } } 5c4: 1d 5c JMP LR 5c6: 00 00 NOP NOP 5c8: 0c 00 00 40 .long 0x4000000c ->1073741836 ..\KF32Lib\src\kf32a156_osc.c:810 /*---------------- 设置OSC_CTL2寄存器INTHFSWEN位 ----------------*/ if (NewState != FALSE) { /* 使能内部高频振荡器工作 */ SFR_SET_BIT_ASM(OSC_CTL2, OSC_CTL2_INTHFSWEN_POS); 5cc: 29 4c SET [R5], #1 ..\KF32Lib\src\kf32a156_osc.c:817 else { /* 无效 */ SFR_CLR_BIT_ASM(OSC_CTL2, OSC_CTL2_INTHFSWEN_POS); } } 5ce: 1d 5c JMP LR 000005d0 : OSC_INTLF_Software_Enable(): ..\KF32Lib\src\kf32a156_osc.c:833 /*---------------- 设置OSC_CTL2寄存器INTLFSWEN位 ----------------*/ if (NewState != FALSE) { /* 使能内部低频振荡器工作 */ SFR_SET_BIT_ASM(OSC_CTL2, OSC_CTL2_INTLFSWEN_POS); 5d0: 03 45 LD R5, [PC + #3] ;->0x5dc :=0x4000000c ..\KF32Lib\src\kf32a156_osc.c:830 { /* 参数校验 */ CHECK_RESTRICTION(CHECK_FUNCTIONAL_STATE(NewState)); /*---------------- 设置OSC_CTL2寄存器INTLFSWEN位 ----------------*/ if (NewState != FALSE) 5d2: 00 38 CMP R0, #0 5d4: 06 f1 JNZ $+6 ;->0x5e0 ..\KF32Lib\src\kf32a156_osc.c:838 SFR_SET_BIT_ASM(OSC_CTL2, OSC_CTL2_INTLFSWEN_POS); } else { /* 无效 */ SFR_CLR_BIT_ASM(OSC_CTL2, OSC_CTL2_INTLFSWEN_POS); 5d6: 28 4e CLR [R5], #0 ..\KF32Lib\src\kf32a156_osc.c:840 } } 5d8: 1d 5c JMP LR 5da: 00 00 NOP NOP 5dc: 0c 00 00 40 .long 0x4000000c ->1073741836 ..\KF32Lib\src\kf32a156_osc.c:833 /*---------------- 设置OSC_CTL2寄存器INTLFSWEN位 ----------------*/ if (NewState != FALSE) { /* 使能内部低频振荡器工作 */ SFR_SET_BIT_ASM(OSC_CTL2, OSC_CTL2_INTLFSWEN_POS); 5e0: 28 4c SET [R5], #0 ..\KF32Lib\src\kf32a156_osc.c:840 else { /* 无效 */ SFR_CLR_BIT_ASM(OSC_CTL2, OSC_CTL2_INTLFSWEN_POS); } } 5e2: 1d 5c JMP LR 000005e4 : 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) 5e4: 51 10 MOV R5, #1 5e6: ae 7b LSL R5, #30 5e8: 85 98 LD.W R0, [R5 + #2] 5ea: 04 7c LSR R0, #4 ..\KF32Lib\src\kf32a156_osc.c:1204 else { /* PLL未锁定 */ return RESET; } } 5ec: 51 10 MOV R5, #1 5ee: 40 d5 ANL R0, R0, R5 5f0: 1d 5c JMP LR 000005f2 : 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) 5f2: 51 10 MOV R5, #1 5f4: ae 7b LSL R5, #30 5f6: 85 98 LD.W R0, [R5 + #2] 5f8: 01 7c LSR R0, #1 ..\KF32Lib\src\kf32a156_osc.c:1264 else { /* PLL未锁定 */ return RESET; } } 5fa: 51 10 MOV R5, #1 5fc: 40 d5 ANL R0, R0, R5 5fe: 1d 5c JMP LR 00000600 : SYSTICK_Cmd(): ..\KF32Lib\src\kf32a156_systick.c:118 /*---------------- 设置ST_CTL寄存器STEN位 ----------------*/ if (NewState != FALSE) { /* 使能系统节拍定时器 */ SFR_SET_BIT_ASM(ST_CTL, ST_CTL_STEN_POS); 600: 03 45 LD R5, [PC + #3] ;->0x60c :=0x402000a0 ..\KF32Lib\src\kf32a156_systick.c:115 { /* 参数校验 */ CHECK_RESTRICTION(CHECK_FUNCTIONAL_STATE(NewState)); /*---------------- 设置ST_CTL寄存器STEN位 ----------------*/ if (NewState != FALSE) 602: 00 38 CMP R0, #0 604: 06 f1 JNZ $+6 ;->0x610 ..\KF32Lib\src\kf32a156_systick.c:123 SFR_SET_BIT_ASM(ST_CTL, ST_CTL_STEN_POS); } else { /* 禁止系统节拍定时器 */ SFR_CLR_BIT_ASM(ST_CTL, ST_CTL_STEN_POS); 606: 28 4e CLR [R5], #0 ..\KF32Lib\src\kf32a156_systick.c:125 } } 608: 1d 5c JMP LR 60a: 00 00 NOP NOP 60c: a0 00 20 40 .long 0x402000a0 ->1075839136 [!!!@4@:DO #16, $+32 ;->0x64c ..\KF32Lib\src\kf32a156_systick.c:118 /*---------------- 设置ST_CTL寄存器STEN位 ----------------*/ if (NewState != FALSE) { /* 使能系统节拍定时器 */ SFR_SET_BIT_ASM(ST_CTL, ST_CTL_STEN_POS); 610: 28 4c SET [R5], #0 ..\KF32Lib\src\kf32a156_systick.c:125 else { /* 禁止系统节拍定时器 */ SFR_CLR_BIT_ASM(ST_CTL, ST_CTL_STEN_POS); } } 612: 1d 5c JMP LR 00000614 : SYSTICK_Clock_Config(): ..\KF32Lib\src\kf32a156_systick.c:145 /*---------------- 设置ST_CTL寄存器STCLKS位 ----------------*/ if (SysClock != SYSTICK_SYS_CLOCK_DIV_2) { /* 选择SCLK作为时钟 */ SFR_SET_BIT_ASM(ST_CTL, ST_CTL_STCLKS_POS); 614: 03 45 LD R5, [PC + #3] ;->0x620 :=0x402000a0 ..\KF32Lib\src\kf32a156_systick.c:142 { /* 参数校验 */ CHECK_RESTRICTION(CHECK_SYSTICK_CLOCK(SysClock)); /*---------------- 设置ST_CTL寄存器STCLKS位 ----------------*/ if (SysClock != SYSTICK_SYS_CLOCK_DIV_2) 616: 00 38 CMP R0, #0 618: 06 f1 JNZ $+6 ;->0x624 ..\KF32Lib\src\kf32a156_systick.c:150 SFR_SET_BIT_ASM(ST_CTL, ST_CTL_STCLKS_POS); } else { /* 选择SCLK/2作为时钟 */ SFR_CLR_BIT_ASM(ST_CTL, ST_CTL_STCLKS_POS); 61a: 2a 4e CLR [R5], #2 ..\KF32Lib\src\kf32a156_systick.c:152 } } 61c: 1d 5c JMP LR 61e: 00 00 NOP NOP 620: a0 00 20 40 .long 0x402000a0 ->1075839136 [!!!@4@:DO #16, $+32 ;->0x660 ..\KF32Lib\src\kf32a156_systick.c:145 /*---------------- 设置ST_CTL寄存器STCLKS位 ----------------*/ if (SysClock != SYSTICK_SYS_CLOCK_DIV_2) { /* 选择SCLK作为时钟 */ SFR_SET_BIT_ASM(ST_CTL, ST_CTL_STCLKS_POS); 624: 2a 4c SET [R5], #2 ..\KF32Lib\src\kf32a156_systick.c:152 else { /* 选择SCLK/2作为时钟 */ SFR_CLR_BIT_ASM(ST_CTL, ST_CTL_STCLKS_POS); } } 626: 1d 5c JMP LR 00000628 : SYSTICK_Systick_INT_Enable(): ..\KF32Lib\src\kf32a156_systick.c:169 /*---------------- 设置ST_CTL寄存器TICKINTEN位 ----------------*/ if (SysClock != FALSE) { /* 计数到0发送SysTick中断请求 */ SFR_SET_BIT_ASM(ST_CTL, ST_CTL_TICKINTEN_POS); 628: 03 45 LD R5, [PC + #3] ;->0x634 :=0x402000a0 ..\KF32Lib\src\kf32a156_systick.c:166 { /* 参数校验 */ CHECK_RESTRICTION(CHECK_FUNCTIONAL_STATE(SysClock)); /*---------------- 设置ST_CTL寄存器TICKINTEN位 ----------------*/ if (SysClock != FALSE) 62a: 00 38 CMP R0, #0 62c: 06 f1 JNZ $+6 ;->0x638 ..\KF32Lib\src\kf32a156_systick.c:174 SFR_SET_BIT_ASM(ST_CTL, ST_CTL_TICKINTEN_POS); } else { /* 计数到0不发送SysTick中断请求 */ SFR_CLR_BIT_ASM(ST_CTL, ST_CTL_TICKINTEN_POS); 62e: 29 4e CLR [R5], #1 ..\KF32Lib\src\kf32a156_systick.c:176 } } 630: 1d 5c JMP LR 632: 00 00 NOP NOP 634: a0 00 20 40 .long 0x402000a0 ->1075839136 [!!!@4@:DO #16, $+32 ;->0x674 ..\KF32Lib\src\kf32a156_systick.c:169 /*---------------- 设置ST_CTL寄存器TICKINTEN位 ----------------*/ if (SysClock != FALSE) { /* 计数到0发送SysTick中断请求 */ SFR_SET_BIT_ASM(ST_CTL, ST_CTL_TICKINTEN_POS); 638: 29 4c SET [R5], #1 ..\KF32Lib\src\kf32a156_systick.c:176 else { /* 计数到0不发送SysTick中断请求 */ SFR_CLR_BIT_ASM(ST_CTL, ST_CTL_TICKINTEN_POS); } } 63a: 1d 5c JMP LR 0000063c : SYSTICK_Reload_Config(): ..\KF32Lib\src\kf32a156_systick.c:210 { /* 参数校验 */ CHECK_RESTRICTION(CHECK_SYSTICK_RELOAD(Reload)); /*--------------- 设置ST_RELOAD寄存器 ---------------*/ ST_RELOAD = Reload; 63c: 02 45 LD R5, [PC + #2] ;->0x644 :=0x402000a0 63e: 68 a0 ST.W [R5 + #1], R0 ..\KF32Lib\src\kf32a156_systick.c:211 } 640: 1d 5c JMP LR 642: 00 00 NOP NOP 644: a0 00 20 40 .long 0x402000a0 ->1075839136 [!!!@4@:DO #16, $+32 ;->0x684 00000648 : SYSTICK_Counter_Updata(): ..\KF32Lib\src\kf32a156_systick.c:223 */ void SYSTICK_Counter_Updata (void) { /*-- 向ST_CV寄存器写任意值,以清零当前值寄存器, 并清零COUNTZERO标志位,确保重载值能加载到当前值寄存器中 --*/ ST_CV = 0; 648: 40 10 MOV R4, #0 64a: 02 45 LD R5, [PC + #2] ;->0x650 :=0x402000a0 64c: ac a0 ST.W [R5 + #2], R4 ..\KF32Lib\src\kf32a156_systick.c:224 } 64e: 1d 5c JMP LR 650: a0 00 20 40 .long 0x402000a0 ->1075839136 [!!!@4@:DO #16, $+32 ;->0x690 00000654 : 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) { 654: 9f 5f PUSH {R6-R10,LR} 656: e4 30 SUB SP, #4 658: a0 d1 ZXT.B R10, R0 ..\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); 65a: 01 10 MOV R0, #1 65c: 2f 45 LD R5, [PC + #47] ;->0x718 :=0x5d0 65e: 05 5c LJMP R5 ..\KF32Lib\system_init.c:114 OSC_INTHF_Software_Enable(TRUE); 660: 01 10 MOV R0, #1 662: 2f 45 LD R5, [PC + #47] ;->0x71c :=0x5bc 664: 05 5c LJMP R5 ..\KF32Lib\system_init.c:115 FLASH_CFG = 0xC7; 666: 47 1c MOV R4, #199 668: 2e 45 LD R5, [PC + #46] ;->0x720 :=0x40200100 66a: 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); 66c: 00 10 MOV R0, #0 66e: 2e 45 LD R5, [PC + #46] ;->0x724 :=0x4b8 670: 25 59 MOV R9, R5 672: 05 5c LJMP R5 ..\KF32Lib\system_init.c:118 OSC_SCK_Source_Config(SCLK_SOURCE_INTHF); 674: 00 10 MOV R0, #0 676: 2d 45 LD R5, [PC + #45] ;->0x728 :=0x528 678: 05 59 MOV R8, R5 67a: 05 5c LJMP R5 ..\KF32Lib\system_init.c:119 StartUpCounter = HSI_STARTUP_TIMEOUT; 67c: 50 17 MOV R5, #112 67e: e5 85 ST.W [SP], R5 ..\KF32Lib\system_init.c:120 while (--StartUpCounter) 680: 5e 82 LD.W R5, [SP] 682: 6d cc SUB R5, R5, #1 684: e5 85 ST.W [SP], R5 686: 50 38 CMP R5, #0 688: fc f1 JNZ $-4 ;->0x680 68a: 29 47 LD R7, [PC + #41] ;->0x72c :=0x5f2 ..\KF32Lib\system_init.c:122 ; while (OSC_Get_INTHF_INT_Flag() != SET) 68c: 07 5c LJMP R7 68e: c0 58 MOV R6, R0 690: 01 38 CMP R0, #1 692: fd f1 JNZ $-3 ;->0x68c ..\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); 694: 00 10 MOV R0, #0 696: 27 45 LD R5, [PC + #39] ;->0x730 :=0x4d0 698: 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)) 69a: aa 58 MOV R5, R10 69c: 59 31 SUB R5, #25 69e: 45 d1 ZXT.B R4, R5 6a0: 4f 3d CMP R4, #95 6a2: 21 f8 JHI $+33 ;->0x6e4 ..\KF32Lib\system_init.c:177 { OSC_PLL_Multiple_Value_Select( PLL_Value_Select[SCLK_Value - 25][0], PLL_Value_Select[SCLK_Value - 25][1], 6a4: 24 43 LD R3, [PC + #36] ;->0x734 :=0x874 6a6: 43 10 MOV R4, #3 6a8: 2d cb MULS R5, R5, R4 6aa: 00 00 NOP NOP 6ac: 63 c3 ADD R4, R3, 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( 6ae: 43 e5 LD.B R0, [R3 + R5] 6b0: 4c 88 LD.B R1, [R4 + #1] 6b2: 94 88 LD.B R2, [R4 + #2] 6b4: 21 45 LD R5, [PC + #33] ;->0x738 :=0x53c 6b6: 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); 6b8: 07 10 MOV R0, #7 6ba: 21 45 LD R5, [PC + #33] ;->0x73c :=0x590 6bc: 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); 6be: 06 58 MOV R0, R6 6c0: 20 45 LD R5, [PC + #32] ;->0x740 :=0x5a8 6c2: 05 5c LJMP R5 ..\KF32Lib\system_init.c:191 OSC_PLL_RST(); 6c4: 20 45 LD R5, [PC + #32] ;->0x744 :=0x584 6c6: 05 5c LJMP R5 6c8: 20 46 LD R6, [PC + #32] ;->0x748 :=0x5e4 ..\KF32Lib\system_init.c:192 while (OSC_Get_PLL_INT_Flag() != SET) 6ca: 06 5c LJMP R6 6cc: 01 38 CMP R0, #1 6ce: fe f1 JNZ $-2 ;->0x6ca ..\KF32Lib\system_init.c:194 ; if (SCLK_Value <= 48) 6d0: a0 3b CMP R10, #48 6d2: 49 f8 JHI $+73 ;->0x764 ..\KF32Lib\system_init.c:195 FLASH_CFG = 0xC2; 6d4: 42 1c MOV R4, #194 6d6: 13 45 LD R5, [PC + #19] ;->0x720 :=0x40200100 6d8: 6c a1 ST.W [R5 + #5], R4 ..\KF32Lib\system_init.c:201 else if (SCLK_Value <= 96) FLASH_CFG = 0xC4; else if (SCLK_Value <= 120) FLASH_CFG = 0xC5; /* Configure the System clock source is PLL */ OSC_SCK_Division_Config(SCLK_DIVISION_1); 6da: 00 10 MOV R0, #0 6dc: 09 5c LJMP R9 ..\KF32Lib\system_init.c:202 OSC_SCK_Source_Config(SCLK_SOURCE_PLL); 6de: 04 10 MOV R0, #4 6e0: 08 5c LJMP R8 6e2: 05 04 SJMP $+5 ;->0x6ec ..\KF32Lib\system_init.c:206 } else { OSC_SCK_Division_Config(SCLK_DIVISION_1); 6e4: 00 10 MOV R0, #0 6e6: 09 5c LJMP R9 ..\KF32Lib\system_init.c:208 #ifdef SYSCLK_FREQ_HSI OSC_SCK_Source_Config(SCLK_SOURCE_INTHF); 6e8: 00 10 MOV R0, #0 6ea: 08 5c LJMP R8 ..\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); 6ec: 00 10 MOV R0, #0 6ee: 18 45 LD R5, [PC + #24] ;->0x74c :=0x4a0 6f0: 05 5c LJMP R5 ..\KF32Lib\system_init.c:216 #ifdef SYSCLK_FREQ_HSI OSC_HFCK_Source_Config(HFCK_SOURCE_INTHF); 6f2: 00 10 MOV R0, #0 6f4: 17 45 LD R5, [PC + #23] ;->0x750 :=0x4e0 6f6: 05 5c LJMP R5 ..\KF32Lib\system_init.c:220 #else OSC_HFCK_Source_Config(HFCK_SOURCE_EXTHF); #endif OSC_HFCK_Enable(TRUE); 6f8: 01 10 MOV R0, #1 6fa: 17 45 LD R5, [PC + #23] ;->0x754 :=0x4f8 6fc: 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); 6fe: 00 10 MOV R0, #0 700: 16 45 LD R5, [PC + #22] ;->0x758 :=0x488 702: 05 5c LJMP R5 ..\KF32Lib\system_init.c:223 OSC_LFCK_Source_Config(LFCK_INPUT_INTLF); 704: 00 10 MOV R0, #0 706: 16 45 LD R5, [PC + #22] ;->0x75c :=0x508 708: 05 5c LJMP R5 ..\KF32Lib\system_init.c:224 OSC_LFCK_Enable(TRUE); 70a: 01 10 MOV R0, #1 70c: 15 45 LD R5, [PC + #21] ;->0x760 :=0x518 70e: 05 5c LJMP R5 ..\KF32Lib\system_init.c:241 */ void SystemInit(uint8_t SCLK_Value) { /* Configure the System clock source, PLL Multiplier and Divider factors */ SetSysClock(SCLK_Value); } 710: e4 28 ADD SP, #4 712: 1f 5e POP {R6-R10} 714: 0d 5d POP LR 716: 1d 5c JMP LR 718: d0 05 00 00 .long 0x000005d0 ->000001488 [!!!@2@:SJMP $+464 ;->0xab8 @@: NOP 71c: bc 05 00 00 .long 0x000005bc ->000001468 [!!!@2@:SJMP $+444 ;->0xa94 @@: NOP 720: 00 01 20 40 .long 0x40200100 ->1075839232 [!!!@2@:CMN R0, R0 @@: LD R0, [PC + #32] ;->0x7a0 :=0x59054515 724: b8 04 00 00 .long 0x000004b8 ->000001208 [!!!@2@:SJMP $+184 ;->0x894 @@: NOP 728: 28 05 00 00 .long 0x00000528 ->000001320 [!!!@2@:SJMP $+296 ;->0x978 @@: NOP 72c: f2 05 00 00 .long 0x000005f2 ->000001522 [!!!@2@:SJMP $+498 ;->0xb10 @@: NOP 730: d0 04 00 00 .long 0x000004d0 ->000001232 [!!!@2@:SJMP $+208 ;->0x8d0 @@: NOP 734: 74 08 00 00 .long 0x00000874 ->000002164 [!!!@2@:LD.W R0, [SP + #116] @@: NOP 738: 3c 05 00 00 .long 0x0000053c ->000001340 [!!!@2@:SJMP $+316 ;->0x9b0 @@: NOP 73c: 90 05 00 00 .long 0x00000590 ->000001424 [!!!@2@:SJMP $+400 ;->0xa5c @@: NOP 740: a8 05 00 00 .long 0x000005a8 ->000001448 [!!!@2@:SJMP $+424 ;->0xa90 @@: NOP 744: 84 05 00 00 .long 0x00000584 ->000001412 [!!!@2@:SJMP $+388 ;->0xa4c @@: NOP 748: e4 05 00 00 .long 0x000005e4 ->000001508 [!!!@2@:SJMP $+484 ;->0xb10 @@: NOP 74c: a0 04 00 00 .long 0x000004a0 ->000001184 [!!!@2@:SJMP $+160 ;->0x88c @@: NOP 750: e0 04 00 00 .long 0x000004e0 ->000001248 [!!!@2@:SJMP $+224 ;->0x910 @@: NOP 754: f8 04 00 00 .long 0x000004f8 ->000001272 [!!!@2@:SJMP $+248 ;->0x944 @@: NOP 758: 88 04 00 00 .long 0x00000488 ->000001160 [!!!@2@:SJMP $+136 ;->0x868 @@: NOP 75c: 08 05 00 00 .long 0x00000508 ->000001288 [!!!@2@:SJMP $+264 ;->0x96c @@: NOP 760: 18 05 00 00 .long 0x00000518 ->000001304 [!!!@2@:SJMP $+280 ;->0x990 @@: NOP ..\KF32Lib\system_init.c:196 OSC_PLL_RST(); while (OSC_Get_PLL_INT_Flag() != SET) ; if (SCLK_Value <= 48) FLASH_CFG = 0xC2; else if (SCLK_Value <= 96) 764: a0 3e CMP R10, #96 766: 05 f8 JHI $+5 ;->0x770 ..\KF32Lib\system_init.c:197 FLASH_CFG = 0xC4; 768: 44 1c MOV R4, #196 76a: 04 45 LD R5, [PC + #4] ;->0x778 :=0x40200100 76c: 6c a1 ST.W [R5 + #5], R4 76e: b6 07 SJMP $-74 ;->0x6da ..\KF32Lib\system_init.c:199 else if (SCLK_Value <= 120) FLASH_CFG = 0xC5; 770: 45 1c MOV R4, #197 772: 02 45 LD R5, [PC + #2] ;->0x778 :=0x40200100 774: 6c a1 ST.W [R5 + #5], R4 776: b2 07 SJMP $-78 ;->0x6da 778: 00 01 20 40 .long 0x40200100 ->1075839232 [!!!@2@:CMN R0, R0 @@: LD R0, [PC + #32] ;->0x7f8 :=0x648 0000077c : 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) { 77c: 8f 5f PUSH {R6-R9,LR} 77e: 00 d1 ZXT.B R0, R0 780: 11 d0 ZXT.H R1, R1 ..\Driver\User_SysTick.c:73 uint32_t Reload; Reload = Frq * Reload_ms * 500U; 782: 78 ca MULS R7, R0, R1 784: 00 00 NOP NOP 786: 19 45 LD R5, [PC + #25] ;->0x7e8 :=0x1f4 788: 7f cb MULS R7, R7, R5 78a: 00 00 NOP NOP ..\Driver\User_SysTick.c:76 if (Reload > 0xffffffU) { return 1U; 78c: 61 10 MOV R6, #1 ..\Driver\User_SysTick.c:74 uint8_t SysTick_Config(uint8_t Frq, uint16_t Reload_ms) { uint32_t Reload; Reload = Frq * Reload_ms * 500U; if (Reload > 0xffffffU) 78e: 18 45 LD R5, [PC + #24] ;->0x7ec :=0xffffff 790: 75 70 CMP R7, R5 792: 27 f8 JHI $+39 ;->0x7e0 ..\Driver\User_SysTick.c:82 } else {} /*before initializtion,disable systick timer*/ SYSTICK_Cmd(FALSE); 794: 00 10 MOV R0, #0 796: 17 45 LD R5, [PC + #23] ;->0x7f0 :=0x600 798: 25 59 MOV R9, R5 79a: 05 5c LJMP R5 ..\Driver\User_SysTick.c:83 INT_Interrupt_Enable(INT_SysTick, FALSE); 79c: 0f 10 MOV R0, #15 79e: 10 10 MOV R1, #0 7a0: 15 45 LD R5, [PC + #21] ;->0x7f4 :=0x344 7a2: 05 59 MOV R8, R5 7a4: 05 5c LJMP R5 ..\Driver\User_SysTick.c:85 /*write ST_CV any valer,clear ST_CV*/ SYSTICK_Counter_Updata(); 7a6: 15 45 LD R5, [PC + #21] ;->0x7f8 :=0x648 7a8: 05 5c LJMP R5 ..\Driver\User_SysTick.c:88 /* Select SysTick clock source by using STCLKS */ ST_CALI &= (~0x80000000); 7aa: 15 45 LD R5, [PC + #21] ;->0x7fc :=0x402000a0 7ac: e5 98 LD.W R4, [R5 + #3] 7ae: a7 4b CLR R4, #31 7b0: 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); 7b2: 00 10 MOV R0, #0 7b4: 13 45 LD R5, [PC + #19] ;->0x800 :=0x614 7b6: 05 5c LJMP R5 ..\Driver\User_SysTick.c:93 /**Set Reload value in ms*/ SYSTICK_Reload_Config(Reload - 1U); 7b8: 87 c7 SUB R0, R7, R6 7ba: 13 45 LD R5, [PC + #19] ;->0x804 :=0x63c 7bc: 05 5c LJMP R5 ..\Driver\User_SysTick.c:95 /*enable system timer IRQ&interrupt flag*/ SYSTICK_Systick_INT_Enable(TRUE); 7be: 06 58 MOV R0, R6 7c0: 12 45 LD R5, [PC + #18] ;->0x808 :=0x628 7c2: 05 5c LJMP R5 ..\Driver\User_SysTick.c:97 /*Configuration system timer Interrupt Priority*/ INT_Interrupt_Priority_Config(INT_SysTick, 2, 0); 7c4: 0f 10 MOV R0, #15 7c6: 12 10 MOV R1, #2 7c8: 20 10 MOV R2, #0 7ca: 11 45 LD R5, [PC + #17] ;->0x80c :=0x3f0 7cc: 05 5c LJMP R5 ..\Driver\User_SysTick.c:99 /*enable systick timer*/ SYSTICK_Cmd(TRUE); 7ce: 06 58 MOV R0, R6 7d0: 09 5c LJMP R9 ..\Driver\User_SysTick.c:101 /*enable system timer Interrupt*/ INT_Interrupt_Enable(INT_SysTick, TRUE); 7d2: 0f 10 MOV R0, #15 7d4: 26 58 MOV R1, R6 7d6: 08 5c LJMP R8 ..\Driver\User_SysTick.c:102 INT_Clear_Interrupt_Flag(INT_SysTick); 7d8: 0f 10 MOV R0, #15 7da: 0e 45 LD R5, [PC + #14] ;->0x810 :=0x3a0 7dc: 05 5c LJMP R5 ..\Driver\User_SysTick.c:104 return 0U; 7de: 60 10 MOV R6, #0 ..\Driver\User_SysTick.c:105 } 7e0: 06 58 MOV R0, R6 7e2: 0f 5e POP {R6-R9} 7e4: 0d 5d POP LR 7e6: 1d 5c JMP LR 7e8: f4 01 00 00 .long 0x000001f4 ->000000500 [!!!@2@:CMN PC, R4 @@: NOP 7ec: ff ff ff 00 .long 0x00ffffff ->016777215 7f0: 00 06 00 00 .long 0x00000600 ->000001536 [!!!@2@:SJMP $-512 ;->0x3f0 @@: NOP 7f4: 44 03 00 00 .long 0x00000344 ->000000836 [!!!@4@:JMP $+4456448 ;->0x8807f4 7f8: 48 06 00 00 .long 0x00000648 ->000001608 [!!!@2@:SJMP $-440 ;->0x488 @@: NOP 7fc: a0 00 20 40 .long 0x402000a0 ->1075839136 [!!!@4@:DO #16, $+32 ;->0x83c 800: 14 06 00 00 .long 0x00000614 ->000001556 [!!!@2@:SJMP $-492 ;->0x428 @@: NOP 804: 3c 06 00 00 .long 0x0000063c ->000001596 [!!!@2@:SJMP $-452 ;->0x47c @@: NOP 808: 28 06 00 00 .long 0x00000628 ->000001576 [!!!@2@:SJMP $-472 ;->0x458 @@: NOP 80c: f0 03 00 00 .long 0x000003f0 ->000001008 [!!!@4@:JMP $-1048576 ;->0xffe0080c 810: a0 03 00 00 .long 0x000003a0 ->000000928 [!!!@4@:JMP $-6291456 ;->0xff400810 00000814 <_NMI_exception>: _NMI_exception(): ..\kf_it.c:23 //***************************************************************************************** void __attribute__((interrupt)) _NMI_exception (void); void __attribute__((interrupt)) _NMI_exception (void) { } 814: 7d 5d CLR PSW, #29 816: 1d 5c JMP LR 00000818 <_HardFault_exception>: _HardFault_exception(): ..\kf_it.c:32 //***************************************************************************************** void __attribute__((interrupt)) _HardFault_exception (void); void __attribute__((interrupt)) _HardFault_exception (void) { } 818: 7d 5d CLR PSW, #29 81a: 1d 5c JMP LR 0000081c <_StackFault_exception>: _StackFault_exception(): ..\kf_it.c:41 //***************************************************************************************** void __attribute__((interrupt)) _StackFault_exception (void); void __attribute__((interrupt)) _StackFault_exception (void) { } 81c: 7d 5d CLR PSW, #29 81e: 1d 5c JMP LR 00000820 <_AriFault_exception>: _AriFault_exception(): ..\kf_it.c:50 //***************************************************************************************** void __attribute__((interrupt)) _AriFault_exception (void); void __attribute__((interrupt)) _AriFault_exception (void) { } 820: 7d 5d CLR PSW, #29 822: 1d 5c JMP LR 00000824 <_SVC_exception>: _SVC_exception(): ..\kf_it.c:59 //***************************************************************************************** void __attribute__((interrupt)) _SVC_exception (void); void __attribute__((interrupt)) _SVC_exception (void) { } 824: 7d 5d CLR PSW, #29 826: 1d 5c JMP LR 00000828 <_SoftSV_exception>: _SoftSV_exception(): ..\kf_it.c:68 //***************************************************************************************** void __attribute__((interrupt)) _SoftSV_exception (void); void __attribute__((interrupt)) _SoftSV_exception (void) { } 828: 7d 5d CLR PSW, #29 82a: 1d 5c JMP LR 0000082c <_SysTick_exception>: _SysTick_exception(): ..\kf_it.c:75 //***************************************************************************************** // SysTick Interrupt Course //***************************************************************************************** void __attribute__((interrupt)) _SysTick_exception (void); void __attribute__((interrupt)) _SysTick_exception (void) { 82c: 2d 5d PUSH LR 82e: 25 5d PUSH R5 ..\kf_it.c:76 Task_SysTick_Handler(); 830: 03 45 LD R5, [PC + #3] ;->0x83c :=0x2a8 832: 05 5c LJMP R5 ..\kf_it.c:77 } 834: 7d 5d CLR PSW, #29 836: 05 5d POP R5 838: 0d 5d POP LR 83a: 1d 5c JMP LR 83c: a8 02 00 00 .long 0x000002a8 ->000000680 [!!!@2@:SVC SVC, #168 @@: NOP 00000840 <_ECC_exception>: _ECC_exception(): ..\kf_it.c:85 //***************************************************************************************** void __attribute__((interrupt)) _ECC_exception (void); void __attribute__((interrupt)) _ECC_exception (void) { } 840: 7d 5d CLR PSW, #29 842: 1d 5c JMP LR 00000844
: main(): ..\main.c:13 * ****************************************************************************************/ #include "main.h" //Main Function int main(void) { 844: 2d 5d PUSH LR ..\main.c:14 SystemInit(120U); 846: 08 17 MOV R0, #120 848: 07 45 LD R5, [PC + #7] ;->0x864 :=0x654 84a: 05 5c LJMP R5 ..\main.c:15 SysTick_Config(120U, 1U); 84c: 08 17 MOV R0, #120 84e: 11 10 MOV R1, #1 850: 06 45 LD R5, [PC + #6] ;->0x868 :=0x77c 852: 05 5c LJMP R5 ..\main.c:16 INT_All_Enable(TRUE); 854: 01 10 MOV R0, #1 856: 06 45 LD R5, [PC + #6] ;->0x86c :=0x330 858: 05 5c LJMP R5 ..\main.c:17 TaskProc(); 85a: 06 45 LD R5, [PC + #6] ;->0x870 :=0x25c 85c: 05 5c LJMP R5 ..\main.c:18 } 85e: 00 10 MOV R0, #0 860: 0d 5d POP LR 862: 1d 5c JMP LR 864: 54 06 00 00 .long 0x00000654 ->000001620 [!!!@2@:SJMP $-428 ;->0x50c @@: NOP 868: 7c 07 00 00 .long 0x0000077c ->000001916 [!!!@2@:SJMP $-132 ;->0x760 @@: NOP 86c: 30 03 00 00 .long 0x00000330 ->000000816 [!!!@4@:JMP $+3145728 ;->0x60086c 870: 5c 02 00 00 .long 0x0000025c ->000000604 [!!!@2@:SVC SVC, #92 @@: NOP 00000874 <__init_class_end>: 874: 19 02 SVC SVC, #25 876: 08 0d LD.W R5, [SP + #8] 878: 01 08 LD.W R0, [SP + #1] 87a: 1b 02 SVC SVC, #27 87c: 08 0e LD.W R6, [SP + #8] 87e: 01 08 LD.W R0, [SP + #1] 880: 1d 02 SVC SVC, #29 882: 08 0f LD.W R7, [SP + #8] 884: 01 08 LD.W R0, [SP + #1] 886: 1f 02 SVC SVC, #31 888: 08 10 MOV R0, #8 88a: 01 08 LD.W R0, [SP + #1] 88c: 21 02 SVC SVC, #33 88e: 08 11 MOV R0, #24 890: 01 08 LD.W R0, [SP + #1] 892: 23 02 SVC SVC, #35 894: 08 12 MOV R0, #40 896: 01 08 LD.W R0, [SP + #1] 898: 25 02 SVC SVC, #37 89a: 08 13 MOV R0, #56 89c: 01 08 LD.W R0, [SP + #1] 89e: 27 02 SVC SVC, #39 8a0: 08 14 MOV R0, #72 8a2: 01 08 LD.W R0, [SP + #1] 8a4: 29 02 SVC SVC, #41 8a6: 08 15 MOV R0, #88 8a8: 01 08 LD.W R0, [SP + #1] 8aa: 2b 02 SVC SVC, #43 8ac: 08 16 MOV R0, #104 8ae: 01 08 LD.W R0, [SP + #1] 8b0: 2d 02 SVC SVC, #45 8b2: 08 17 MOV R0, #120 8b4: 01 08 LD.W R0, [SP + #1] 8b6: 2f 02 SVC SVC, #47 8b8: 08 18 MOV R0, #136 8ba: 01 08 LD.W R0, [SP + #1] 8bc: 31 02 SVC SVC, #49 8be: 08 19 MOV R0, #152 8c0: 01 08 LD.W R0, [SP + #1] 8c2: 33 04 SJMP $+51 ;->0x928 8c4: 04 0d LD.W R5, [SP + #4] 8c6: 01 04 SJMP $+1 ;->0x8c8 8c8: 35 04 SJMP $+53 ;->0x932 8ca: 04 1b MOV R0, #180 8cc: 02 04 SJMP $+2 ;->0x8d0 8ce: 37 04 SJMP $+55 ;->0x93c 8d0: 04 0e LD.W R6, [SP + #4] 8d2: 01 04 SJMP $+1 ;->0x8d4 8d4: 39 04 SJMP $+57 ;->0x946 8d6: 04 1d MOV R0, #212 8d8: 02 04 SJMP $+2 ;->0x8dc 8da: 3b 04 SJMP $+59 ;->0x950 8dc: 04 0f LD.W R7, [SP + #4] 8de: 01 04 SJMP $+1 ;->0x8e0 8e0: 3d 04 SJMP $+61 ;->0x95a 8e2: 04 1f MOV R0, #244 8e4: 02 04 SJMP $+2 ;->0x8e8 8e6: 3f 04 SJMP $+63 ;->0x964 8e8: 04 10 MOV R0, #4 8ea: 01 04 SJMP $+1 ;->0x8ec 8ec: 41 04 SJMP $+65 ;->0x96e 8ee: 04 21 ST.W [SP + #4], R1 8f0: 02 04 SJMP $+2 ;->0x8f4 8f2: 43 04 SJMP $+67 ;->0x978 8f4: 04 11 MOV R0, #20 8f6: 01 04 SJMP $+1 ;->0x8f8 8f8: 45 04 SJMP $+69 ;->0x982 8fa: 04 23 ST.W [SP + #4], R3 8fc: 02 04 SJMP $+2 ;->0x900 8fe: 47 04 SJMP $+71 ;->0x98c 900: 04 12 MOV R0, #36 902: 01 04 SJMP $+1 ;->0x904 904: 49 04 SJMP $+73 ;->0x996 906: 04 25 ST.W [SP + #4], R5 908: 02 04 SJMP $+2 ;->0x90c 90a: 4b 04 SJMP $+75 ;->0x9a0 90c: 04 13 MOV R0, #52 90e: 01 04 SJMP $+1 ;->0x910 910: 4d 04 SJMP $+77 ;->0x9aa 912: 04 27 ST.W [SP + #4], R7 914: 02 04 SJMP $+2 ;->0x918 916: 4f 04 SJMP $+79 ;->0x9b4 918: 04 14 MOV R0, #68 91a: 01 04 SJMP $+1 ;->0x91c 91c: 51 04 SJMP $+81 ;->0x9be 91e: 04 29 ADD R0, #20 920: 02 04 SJMP $+2 ;->0x924 922: 53 04 SJMP $+83 ;->0x9c8 924: 04 15 MOV R0, #84 926: 01 04 SJMP $+1 ;->0x928 928: 55 04 SJMP $+85 ;->0x9d2 92a: 04 2b ADD R0, #52 92c: 02 04 SJMP $+2 ;->0x930 92e: 57 04 SJMP $+87 ;->0x9dc 930: 04 16 MOV R0, #100 932: 01 04 SJMP $+1 ;->0x934 934: 59 04 SJMP $+89 ;->0x9e6 936: 04 2d ADD R0, #84 938: 02 04 SJMP $+2 ;->0x93c 93a: 5b 04 SJMP $+91 ;->0x9f0 93c: 04 17 MOV R0, #116 93e: 01 04 SJMP $+1 ;->0x940 940: 5d 04 SJMP $+93 ;->0x9fa 942: 04 2f ADD R0, #116 944: 02 04 SJMP $+2 ;->0x948 946: 5f 04 SJMP $+95 ;->0xa04 948: 04 18 MOV R0, #132 94a: 01 04 SJMP $+1 ;->0x94c 94c: 61 04 SJMP $+97 ;->0xa0e 94e: 04 31 SUB R0, #20 950: 02 04 SJMP $+2 ;->0x954 952: 63 04 SJMP $+99 ;->0xa18 954: 04 19 MOV R0, #148 956: 01 04 SJMP $+1 ;->0x958 958: 65 08 LD.W R0, [SP + #101] 95a: 02 33 SUB R0, #50 95c: 04 02 SVC SVC, #4 95e: 67 08 LD.W R0, [SP + #103] 960: 02 0d LD.W R5, [SP + #2] 962: 01 02 SVC SVC, #1 964: 69 08 LD.W R0, [SP + #105] 966: 02 35 SUB R0, #82 968: 04 02 SVC SVC, #4 96a: 6b 08 LD.W R0, [SP + #107] 96c: 02 1b MOV R0, #178 96e: 02 02 SVC SVC, #2 970: 6d 08 LD.W R0, [SP + #109] 972: 02 37 SUB R0, #114 974: 04 02 SVC SVC, #4 976: 6f 08 LD.W R0, [SP + #111] 978: 02 0e LD.W R6, [SP + #2] 97a: 01 02 SVC SVC, #1 97c: 71 08 LD.W R0, [SP + #113] 97e: 02 39 CMP R0, #18 980: 04 02 SVC SVC, #4 982: 73 08 LD.W R0, [SP + #115] 984: 02 1d MOV R0, #210 986: 02 02 SVC SVC, #2 988: 75 08 LD.W R0, [SP + #117] 98a: 02 3b CMP R0, #50 98c: 04 02 SVC SVC, #4 98e: 77 08 LD.W R0, [SP + #119] 990: 02 0f LD.W R7, [SP + #2] 992: 01 02 SVC SVC, #1 00000994 <_Default_NULL_exception>: _Default_NULL_exception(): ..\_config\vector.c:441 V127_0x000001FC_VectorFunction }; void __attribute__((interrupt,section(".rodata"))) _Default_NULL_exception (void); void __attribute__((interrupt,section(".rodata"))) _Default_NULL_exception (void) { 994: 00 04 SJMP $+0 ;->0x994 ... Disassembly of section .data: 10000000 <__lpdata_end__>: 10000000: 00 00 NOP NOP ... 10000004 : 10000004: 01 01 0a 0a 00 00 00 00 01 00 00 00 00 02 00 00 ................ 10000014 : ... 10000078 <__Heap_Start__>: ... 10000100 <__Heap_length__>: ... 10000178 <__Heap_End__>: ... 1000fe00 : ...