📄 stm32f10x_nvic.txt
字号:
NVIC_GetCPUID PROC
;;;380 {
;;;381 return (SCB->CPUID);
0001b0 4860 LDR r0,|L1.820|
0001b2 6800 LDR r0,[r0,#0]
;;;382 }
0001b4 4770 BX lr
;;;383
ENDP
NVIC_SetVectorTable PROC
;;;402
;;;403 SCB->ExceptionTableOffset = NVIC_VectTab | (Offset & (u32)0x1FFFFF80);
0001b6 f021f021 BIC r1,r1,#0x7f
0001ba f021f021 BIC r1,r1,#0xe0000000
0001be 4308 ORRS r0,r0,r1
0001c0 495d LDR r1,|L1.824|
0001c2 6008 STR r0,[r1,#0]
;;;404 }
0001c4 4770 BX lr
;;;405
ENDP
NVIC_GenerateSystemReset PROC
;;;414 {
;;;415 SCB->AIRC = AIRC_VECTKEY_MASK | (u32)0x04;
0001c6 4958 LDR r1,|L1.808|
0001c8 485c LDR r0,|L1.828|
0001ca 6008 STR r0,[r1,#0]
;;;416 }
0001cc 4770 BX lr
;;;417
ENDP
NVIC_GenerateCoreReset PROC
;;;426 {
;;;427 SCB->AIRC = AIRC_VECTKEY_MASK | (u32)0x01;
0001ce 4956 LDR r1,|L1.808|
0001d0 485b LDR r0,|L1.832|
0001d2 6008 STR r0,[r1,#0]
;;;428 }
0001d4 4770 BX lr
;;;429
ENDP
NVIC_SystemLPConfig PROC
;;;449
;;;450 if (NewState != DISABLE)
0001d6 f04ff04f MOV r2,#0xe000e000
0001da b129 CBZ r1,|L1.488|
;;;451 {
;;;452 SCB->SysCtrl |= LowPowerMode;
0001dc f8d2f8d2 LDR r1,[r2,#0xd10]
0001e0 4308 ORRS r0,r0,r1
0001e2 f8c2f8c2 STR r0,[r2,#0xd10]
;;;453 }
;;;454 else
;;;455 {
;;;456 SCB->SysCtrl &= (u32)(~(u32)LowPowerMode);
;;;457 }
;;;458 }
0001e6 4770 BX lr
|L1.488|
0001e8 f8d2f8d2 LDR r1,[r2,#0xd10]
0001ec ea21ea21 BIC r0,r1,r0
0001f0 f8c2f8c2 STR r0,[r2,#0xd10]
0001f4 4770 BX lr
;;;459
ENDP
NVIC_SystemHandlerConfig PROC
;;;481
;;;482 tmpreg = (u32)0x01 << (SystemHandler & (u32)0x1F);
0001f6 f000f000 AND r0,r0,#0x1f
0001fa 2201 MOVS r2,#1
0001fc fa02fa02 LSL r0,r2,r0
;;;483
;;;484 if (NewState != DISABLE)
000200 f04ff04f MOV r2,#0xe000e000
000204 b129 CBZ r1,|L1.530|
;;;485 {
;;;486 SCB->SysHandlerCtrl |= tmpreg;
000206 f8d2f8d2 LDR r1,[r2,#0xd24]
00020a 4308 ORRS r0,r0,r1
00020c f8c2f8c2 STR r0,[r2,#0xd24]
;;;487 }
;;;488 else
;;;489 {
;;;490 SCB->SysHandlerCtrl &= ~tmpreg;
;;;491 }
;;;492 }
000210 4770 BX lr
|L1.530|
000212 f8d2f8d2 LDR r1,[r2,#0xd24]
000216 ea21ea21 BIC r0,r1,r0
00021a f8c2f8c2 STR r0,[r2,#0xd24]
00021e 4770 BX lr
;;;493
ENDP
NVIC_SystemHandlerPriorityConfig PROC
;;;515 u8 SystemHandlerSubPriority)
;;;516 {
000220 b430 PUSH {r4,r5}
;;;517 u32 tmp1 = 0x00, tmp2 = 0xFF, handlermask = 0x00;
000222 24ff MOVS r4,#0xff
;;;518 u32 tmppriority = 0x00;
;;;519
;;;520 /* Check the parameters */
;;;521 assert(IS_PRIORITY_SYSTEM_HANDLER(SystemHandler));
;;;522 assert(IS_NVIC_PREEMPTION_PRIORITY(SystemHandlerPreemptionPriority));
;;;523 assert(IS_NVIC_SUB_PRIORITY(SystemHandlerSubPriority));
;;;524
;;;525 tmppriority = (0x700 - (SCB->AIRC & (u32)0x700))>> 0x08;
000224 f04ff04f MOV r5,#0xe000e000
000228 f8d5f8d5 LDR r3,[r5,#0xd0c]
00022c f403f403 AND r3,r3,#0x700
000230 f5c3f5c3 RSB r3,r3,#0x700
000234 0a1b LSRS r3,r3,#8
;;;526 tmp1 = (0x4 - tmppriority);
000236 f1c3f1c3 RSB r12,r3,#4
;;;527 tmp2 = tmp2 >> tmppriority;
00023a fa24fa24 LSR r3,r4,r3
;;;528
;;;529 tmppriority = (u32)SystemHandlerPreemptionPriority << tmp1;
00023e fa01fa01 LSL r1,r1,r12
;;;530 tmppriority |= SystemHandlerSubPriority & tmp2;
000242 401a ANDS r2,r2,r3
000244 4311 ORRS r1,r1,r2
;;;531
;;;532 tmppriority = tmppriority << 0x04;
000246 010a LSLS r2,r1,#4
;;;533 tmp1 = SystemHandler & (u32)0xC0;
000248 f000f000 AND r1,r0,#0xc0
;;;534 tmp1 = tmp1 >> 0x06;
00024c 0989 LSRS r1,r1,#6
;;;535 tmp2 = (SystemHandler >> 0x08) & (u32)0x03;
00024e f3c0f3c0 UBFX r0,r0,#8,#2
;;;536 tmppriority = tmppriority << (tmp2 * 0x08);
000252 00c0 LSLS r0,r0,#3
000254 4082 LSLS r2,r2,r0
;;;537 handlermask = (u32)0xFF << (tmp2 * 0x08);
000256 23ff MOVS r3,#0xff
000258 4083 LSLS r3,r3,r0
;;;538
;;;539 SCB->SystemPriority[tmp1] &= ~handlermask;
00025a eb05eb05 ADD r0,r5,r1,LSL #2
00025e f8d0f8d0 LDR r1,[r0,#0xd18]
000262 4399 BICS r1,r1,r3
000264 f8c0f8c0 STR r1,[r0,#0xd18]
;;;540 SCB->SystemPriority[tmp1] |= tmppriority;
000268 f8d0f8d0 LDR r1,[r0,#0xd18]
00026c 4311 ORRS r1,r1,r2
00026e f8c0f8c0 STR r1,[r0,#0xd18]
;;;541 }
000272 bc30 POP {r4,r5}
000274 4770 BX lr
;;;542
ENDP
NVIC_GetSystemHandlerPendingBitStatus PROC
;;;556 ITStatus NVIC_GetSystemHandlerPendingBitStatus(u32 SystemHandler)
;;;557 {
000276 4601 MOV r1,r0
;;;558 ITStatus bitstatus = RESET;
000278 2000 MOVS r0,#0
;;;559 u32 tmp = 0x00, tmppos = 0x00;
;;;560
;;;561 /* Check the parameters */
;;;562 assert(IS_GET_PENDING_SYSTEM_HANDLER(SystemHandler));
;;;563
;;;564 tmppos = (SystemHandler >> 0x0A);
00027a 0a89 LSRS r1,r1,#10
;;;565 tmppos &= (u32)0x0F;
00027c f001f001 AND r1,r1,#0xf
;;;566
;;;567 tmppos = (u32)0x01 << tmppos;
000280 2201 MOVS r2,#1
000282 fa02fa02 LSL r1,r2,r1
;;;568
;;;569 tmp = SCB->SysHandlerCtrl & tmppos;
000286 4a2f LDR r2,|L1.836|
000288 6812 LDR r2,[r2,#0]
00028a 400a ANDS r2,r2,r1
;;;570
;;;571 if (tmp == tmppos)
00028c 428a CMP r2,r1
00028e d100 BNE |L1.658|
;;;572 {
;;;573 bitstatus = SET;
000290 2001 MOVS r0,#1
|L1.658|
;;;574 }
;;;575 else
;;;576 {
;;;577 bitstatus = RESET;
;;;578 }
;;;579 return bitstatus;
;;;580 }
000292 4770 BX lr
;;;581
ENDP
NVIC_SetSystemHandlerPendingBit PROC
;;;601 /* Get the System Handler pending bit position */
;;;602 tmp = SystemHandler & (u32)0x1F;
000294 f000f000 AND r0,r0,#0x1f
;;;603 /* Set the corresponding System Handler pending bit */
;;;604 SCB->IRQControlState |= ((u32)0x01 << tmp);
000298 4924 LDR r1,|L1.812|
00029a 680a LDR r2,[r1,#0]
00029c 2301 MOVS r3,#1
00029e fa03fa03 LSL r0,r3,r0
0002a2 4310 ORRS r0,r0,r2
0002a4 6008 STR r0,[r1,#0]
;;;605 }
0002a6 4770 BX lr
;;;606
ENDP
NVIC_ClearSystemHandlerPendingBit PROC
;;;625 /* Get the System Handler pending bit position */
;;;626 tmp = SystemHandler & (u32)0x1F;
0002a8 f000f000 AND r0,r0,#0x1f
;;;627 /* Clear the corresponding System Handler pending bit */
;;;628 SCB->IRQControlState |= ((u32)0x01 << (tmp - 0x01));
0002ac 491f LDR r1,|L1.812|
0002ae 680a LDR r2,[r1,#0]
0002b0 1e40 SUBS r0,r0,#1
0002b2 2301 MOVS r3,#1
0002b4 fa03fa03 LSL r0,r3,r0
0002b8 4310 ORRS r0,r0,r2
0002ba 6008 STR r0,[r1,#0]
;;;629 }
0002bc 4770 BX lr
;;;630
ENDP
NVIC_GetSystemHandlerActiveBitStatus PROC
;;;648 ITStatus NVIC_GetSystemHandlerActiveBitStatus(u32 SystemHandler)
;;;649 {
0002be 4601 MOV r1,r0
;;;650 ITStatus bitstatus = RESET;
0002c0 2000 MOVS r0,#0
;;;651
;;;652 u32 tmp = 0x00, tmppos = 0x00;
;;;653
;;;654 /* Check the parameters */
;;;655 assert(IS_GET_ACTIVE_SYSTEM_HANDLER(SystemHandler));
;;;656
;;;657 tmppos = (SystemHandler >> 0x0E) & (u32)0x0F;
0002c2 f3c1f3c1 UBFX r1,r1,#14,#4
;;;658
;;;659 tmppos = (u32)0x01 << tmppos;
0002c6 2201 MOVS r2,#1
0002c8 fa02fa02 LSL r1,r2,r1
;;;660
;;;661 tmp = SCB->SysHandlerCtrl & tmppos;
0002cc 4a1d LDR r2,|L1.836|
0002ce 6812 LDR r2,[r2,#0]
0002d0 400a ANDS r2,r2,r1
;;;662
;;;663 if (tmp == tmppos)
0002d2 428a CMP r2,r1
0002d4 d100 BNE |L1.728|
;;;664 {
;;;665 bitstatus = SET;
0002d6 2001 MOVS r0,#1
|L1.728|
;;;666 }
;;;667 else
;;;668 {
;;;669 bitstatus = RESET;
;;;670 }
;;;671 return bitstatus;
;;;672 }
0002d8 4770 BX lr
;;;673
ENDP
NVIC_GetFaultHandlerSources PROC
;;;695
;;;696 tmpreg = (SystemHandler >> 0x12) & (u32)0x03;
0002da f3c0f3c0 UBFX r1,r0,#18,#2
;;;697 tmppos = (SystemHandler >> 0x14) & (u32)0x03;
0002de f3c0f3c0 UBFX r0,r0,#20,#2
;;;698
;;;699 if (tmpreg == 0x00)
0002e2 f04ff04f MOV r2,#0xe000e000
0002e6 b911 CBNZ r1,|L1.750|
;;;700 {
;;;701 faultsources = SCB->HardFaultStatus;
0002e8 f8d2f8d2 LDR r0,[r2,#0xd2c]
;;;702 }
;;;703 else if (tmpreg == 0x01)
;;;704 {
;;;705 faultsources = SCB->ConfigFaultStatus >> (tmppos * 0x08);
;;;706 if (tmppos != 0x02)
;;;707 {
;;;708 faultsources &= (u32)0x0F;
;;;709 }
;;;710 else
;;;711 {
;;;712 faultsources &= (u32)0xFF;
;;;713 }
;;;714 }
;;;715 else
;;;716 {
;;;717 faultsources = SCB->DebugFaultStatus;
;;;718 }
;;;719 return faultsources;
;;;720 }
0002ec 4770 BX lr
|L1.750|
0002ee 2901 CMP r1,#1
0002f0 d10a BNE |L1.776|
0002f2 f8d2f8d2 LDR r1,[r2,#0xd28]
0002f6 00c2 LSLS r2,r0,#3
0002f8 40d1 LSRS r1,r1,r2
0002fa 2802 CMP r0,#2
0002fc d002 BEQ |L1.772|
0002fe f001f001 AND r0,r1,#0xf
000302 4770 BX lr
|L1.772|
000304 b2c8 UXTB r0,r1
000306 4770 BX lr
|L1.776|
000308 f8d2f8d2 LDR r0,[r2,#0xd30]
00030c 4770 BX lr
;;;721
ENDP
NVIC_GetFaultAddress PROC
;;;741
;;;742 tmp = (SystemHandler >> 0x16) & (u32)0x01;
00030e f3c0f3c0 UBFX r0,r0,#22,#1
;;;743
;;;744 if (tmp == 0x00)
000312 f04ff04f MOV r1,#0xe000e000
000316 b910 CBNZ r0,|L1.798|
;;;745 {
;;;746 faultaddress = SCB->MemoryManageFaultAddr;
000318 f8d1f8d1 LDR r0,[r1,#0xd34]
;;;747 }
;;;748 else
;;;749 {
;;;750 faultaddress = SCB->BusFaultAddr;
;;;751 }
;;;752 return faultaddress;
;;;753 }
00031c 4770 BX lr
|L1.798|
00031e f8d1f8d1 LDR r0,[r1,#0xd38]
000322 4770 BX lr
;;;754
ENDP
|L1.804|
000324 05fa0000 DCD 0x05fa0000
|L1.808|
000328 e000ed0c DCD 0xe000ed0c
|L1.812|
00032c e000ed04 DCD 0xe000ed04
|L1.816|
000330 e000ef00 DCD 0xe000ef00
|L1.820|
000334 e000ed00 DCD 0xe000ed00
|L1.824|
000338 e000ed08 DCD 0xe000ed08
|L1.828|
00033c 05fa0004 DCD 0x05fa0004
|L1.832|
000340 05fa0001 DCD 0x05fa0001
|L1.836|
000344 e000ed24 DCD 0xe000ed24
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -