📄 stm32f10x_nvic.txt
字号:
ENDP
NVIC_GenerateSystemReset PROC
;;;412 {
;;;413 SCB->AIRCR = AIRCR_VECTKEY_MASK | (u32)0x04;
00017e 4855 LDR r0,|L1.724|
000180 4953 LDR r1,|L1.720|
000182 1d00 ADDS r0,r0,#4
000184 3108 ADDS r1,r1,#8
000186 6008 STR r0,[r1,#0]
;;;414 }
000188 4770 BX lr
;;;415
ENDP
NVIC_GenerateCoreReset PROC
;;;424 {
;;;425 SCB->AIRCR = AIRCR_VECTKEY_MASK | (u32)0x01;
00018a 4852 LDR r0,|L1.724|
00018c 4950 LDR r1,|L1.720|
00018e 1c40 ADDS r0,r0,#1
000190 3108 ADDS r1,r1,#8
000192 6008 STR r0,[r1,#0]
;;;426 }
000194 4770 BX lr
;;;427
ENDP
NVIC_SystemLPConfig PROC
;;;447
;;;448 if (NewState != DISABLE)
000196 f04ff04f MOV r2,#0xe000e000
00019a b129 CBZ r1,|L1.424|
;;;449 {
;;;450 SCB->SCR |= LowPowerMode;
00019c f8d2f8d2 LDR r1,[r2,#0xd10]
0001a0 4301 ORRS r1,r1,r0
0001a2 f8c2f8c2 STR r1,[r2,#0xd10]
;;;451 }
;;;452 else
;;;453 {
;;;454 SCB->SCR &= (u32)(~(u32)LowPowerMode);
;;;455 }
;;;456 }
0001a6 4770 BX lr
|L1.424|
0001a8 f8d2f8d2 LDR r1,[r2,#0xd10] ;454
0001ac 4381 BICS r1,r1,r0 ;454
0001ae f8c2f8c2 STR r1,[r2,#0xd10] ;454
0001b2 4770 BX lr
;;;457
ENDP
NVIC_SystemHandlerConfig PROC
;;;479
;;;480 tmpreg = (u32)0x01 << (SystemHandler & (u32)0x1F);
0001b4 f000f000 AND r2,r0,#0x1f
0001b8 2001 MOVS r0,#1
0001ba 4090 LSLS r0,r0,r2
;;;481
;;;482 if (NewState != DISABLE)
0001bc f04ff04f MOV r2,#0xe000e000
0001c0 b129 CBZ r1,|L1.462|
;;;483 {
;;;484 SCB->SHCSR |= tmpreg;
0001c2 f8d2f8d2 LDR r1,[r2,#0xd24]
0001c6 4301 ORRS r1,r1,r0
0001c8 f8c2f8c2 STR r1,[r2,#0xd24]
;;;485 }
;;;486 else
;;;487 {
;;;488 SCB->SHCSR &= ~tmpreg;
;;;489 }
;;;490 }
0001cc 4770 BX lr
|L1.462|
0001ce f8d2f8d2 LDR r1,[r2,#0xd24] ;488
0001d2 4381 BICS r1,r1,r0 ;488
0001d4 f8c2f8c2 STR r1,[r2,#0xd24] ;488
0001d8 4770 BX lr
;;;491
ENDP
NVIC_SystemHandlerPriorityConfig PROC
;;;513 u8 SystemHandlerSubPriority)
;;;514 {
0001da b570 PUSH {r4-r6,lr}
;;;515 u32 tmp1 = 0x00, tmp2 = 0xFF, handlermask = 0x00;
0001dc 24ff MOVS r4,#0xff
;;;516 u32 tmppriority = 0x00;
;;;517
;;;518 /* Check the parameters */
;;;519 assert_param(IS_PRIORITY_SYSTEM_HANDLER(SystemHandler));
;;;520 assert_param(IS_NVIC_PREEMPTION_PRIORITY(SystemHandlerPreemptionPriority));
;;;521 assert_param(IS_NVIC_SUB_PRIORITY(SystemHandlerSubPriority));
;;;522
;;;523 tmppriority = (0x700 - (SCB->AIRCR & (u32)0x700))>> 0x08;
0001de f04ff04f MOV r6,#0xe000e000
0001e2 f8d6f8d6 LDR r3,[r6,#0xd0c]
0001e6 f403f403 AND r3,r3,#0x700
0001ea f5c3f5c3 RSB r3,r3,#0x700
0001ee 0a1b LSRS r3,r3,#8
;;;524 tmp1 = (0x4 - tmppriority);
0001f0 f1c3f1c3 RSB r5,r3,#4
;;;525 tmp2 = tmp2 >> tmppriority;
0001f4 40dc LSRS r4,r4,r3
;;;526
;;;527 tmppriority = (u32)SystemHandlerPreemptionPriority << tmp1;
0001f6 40a9 LSLS r1,r1,r5
;;;528 tmppriority |= SystemHandlerSubPriority & tmp2;
0001f8 4022 ANDS r2,r2,r4
0001fa 430a ORRS r2,r2,r1
;;;529
;;;530 tmppriority = tmppriority << 0x04;
0001fc 0111 LSLS r1,r2,#4
;;;531 tmp1 = SystemHandler & (u32)0xC0;
0001fe f000f000 AND r2,r0,#0xc0
;;;532 tmp1 = tmp1 >> 0x06;
000202 0992 LSRS r2,r2,#6
;;;533 tmp2 = (SystemHandler >> 0x08) & (u32)0x03;
000204 f3c0f3c0 UBFX r0,r0,#8,#2
;;;534 tmppriority = tmppriority << (tmp2 * 0x08);
000208 00c0 LSLS r0,r0,#3
00020a 4081 LSLS r1,r1,r0
;;;535 handlermask = (u32)0xFF << (tmp2 * 0x08);
00020c 23ff MOVS r3,#0xff
00020e 4083 LSLS r3,r3,r0
;;;536
;;;537 SCB->SHPR[tmp1] &= ~handlermask;
000210 eb06eb06 ADD r0,r6,r2,LSL #2
000214 f600f600 ADD r0,r0,#0xd18
000218 6802 LDR r2,[r0,#0]
00021a 439a BICS r2,r2,r3
00021c 6002 STR r2,[r0,#0]
;;;538 SCB->SHPR[tmp1] |= tmppriority;
00021e 6802 LDR r2,[r0,#0]
000220 430a ORRS r2,r2,r1
000222 6002 STR r2,[r0,#0]
;;;539 }
000224 bd70 POP {r4-r6,pc}
;;;540
ENDP
NVIC_GetSystemHandlerPendingBitStatus PROC
;;;554 ITStatus NVIC_GetSystemHandlerPendingBitStatus(u32 SystemHandler)
;;;555 {
000226 4601 MOV r1,r0
;;;556 ITStatus bitstatus = RESET;
000228 2000 MOVS r0,#0
;;;557 u32 tmp = 0x00, tmppos = 0x00;
;;;558
;;;559 /* Check the parameters */
;;;560 assert_param(IS_GET_PENDING_SYSTEM_HANDLER(SystemHandler));
;;;561
;;;562 tmppos = (SystemHandler >> 0x0A);
00022a 0a89 LSRS r1,r1,#10
;;;563 tmppos &= (u32)0x0F;
00022c f001f001 AND r2,r1,#0xf
;;;564
;;;565 tmppos = (u32)0x01 << tmppos;
000230 2101 MOVS r1,#1
000232 4091 LSLS r1,r1,r2
;;;566
;;;567 tmp = SCB->SHCSR & tmppos;
000234 4a26 LDR r2,|L1.720|
000236 3220 ADDS r2,r2,#0x20
000238 6812 LDR r2,[r2,#0]
00023a 400a ANDS r2,r2,r1
;;;568
;;;569 if (tmp == tmppos)
00023c 428a CMP r2,r1
00023e d100 BNE |L1.578|
;;;570 {
;;;571 bitstatus = SET;
000240 2001 MOVS r0,#1
|L1.578|
;;;572 }
;;;573 else
;;;574 {
;;;575 bitstatus = RESET;
;;;576 }
;;;577 return bitstatus;
;;;578 }
000242 4770 BX lr
;;;579
ENDP
NVIC_SetSystemHandlerPendingBit PROC
;;;599 /* Get the System Handler pending bit position */
;;;600 tmp = SystemHandler & (u32)0x1F;
000244 f000f000 AND r0,r0,#0x1f
;;;601 /* Set the corresponding System Handler pending bit */
;;;602 SCB->ICSR |= ((u32)0x01 << tmp);
000248 4921 LDR r1,|L1.720|
00024a 680b LDR r3,[r1,#0]
00024c 2201 MOVS r2,#1
00024e 4082 LSLS r2,r2,r0
000250 4313 ORRS r3,r3,r2
000252 600b STR r3,[r1,#0]
;;;603 }
000254 4770 BX lr
;;;604
ENDP
NVIC_ClearSystemHandlerPendingBit PROC
;;;623 /* Get the System Handler pending bit position */
;;;624 tmp = SystemHandler & (u32)0x1F;
000256 f000f000 AND r0,r0,#0x1f
;;;625 /* Clear the corresponding System Handler pending bit */
;;;626 SCB->ICSR |= ((u32)0x01 << (tmp - 0x01));
00025a 4b1d LDR r3,|L1.720|
00025c 6819 LDR r1,[r3,#0]
00025e 1e40 SUBS r0,r0,#1
000260 2201 MOVS r2,#1
000262 4082 LSLS r2,r2,r0
000264 4311 ORRS r1,r1,r2
000266 6019 STR r1,[r3,#0]
;;;627 }
000268 4770 BX lr
;;;628
ENDP
NVIC_GetSystemHandlerActiveBitStatus PROC
;;;646 ITStatus NVIC_GetSystemHandlerActiveBitStatus(u32 SystemHandler)
;;;647 {
00026a 4601 MOV r1,r0
;;;648 ITStatus bitstatus = RESET;
00026c 2000 MOVS r0,#0
;;;649
;;;650 u32 tmp = 0x00, tmppos = 0x00;
;;;651
;;;652 /* Check the parameters */
;;;653 assert_param(IS_GET_ACTIVE_SYSTEM_HANDLER(SystemHandler));
;;;654
;;;655 tmppos = (SystemHandler >> 0x0E) & (u32)0x0F;
00026e f3c1f3c1 UBFX r2,r1,#14,#4
;;;656
;;;657 tmppos = (u32)0x01 << tmppos;
000272 2101 MOVS r1,#1
000274 4091 LSLS r1,r1,r2
;;;658
;;;659 tmp = SCB->SHCSR & tmppos;
000276 4a16 LDR r2,|L1.720|
000278 3220 ADDS r2,r2,#0x20
00027a 6812 LDR r2,[r2,#0]
00027c 400a ANDS r2,r2,r1
;;;660
;;;661 if (tmp == tmppos)
00027e 428a CMP r2,r1
000280 d100 BNE |L1.644|
;;;662 {
;;;663 bitstatus = SET;
000282 2001 MOVS r0,#1
|L1.644|
;;;664 }
;;;665 else
;;;666 {
;;;667 bitstatus = RESET;
;;;668 }
;;;669 return bitstatus;
;;;670 }
000284 4770 BX lr
;;;671
ENDP
NVIC_GetFaultHandlerSources PROC
;;;693
;;;694 tmpreg = (SystemHandler >> 0x12) & (u32)0x03;
000286 f3c0f3c0 UBFX r1,r0,#18,#2
;;;695 tmppos = (SystemHandler >> 0x14) & (u32)0x03;
00028a f3c0f3c0 UBFX r0,r0,#20,#2
;;;696
;;;697 if (tmpreg == 0x00)
00028e f04ff04f MOV r2,#0xe000e000
000292 b911 CBNZ r1,|L1.666|
;;;698 {
;;;699 faultsources = SCB->HFSR;
000294 f8d2f8d2 LDR r0,[r2,#0xd2c]
;;;700 }
;;;701 else if (tmpreg == 0x01)
;;;702 {
;;;703 faultsources = SCB->CFSR >> (tmppos * 0x08);
;;;704 if (tmppos != 0x02)
;;;705 {
;;;706 faultsources &= (u32)0x0F;
;;;707 }
;;;708 else
;;;709 {
;;;710 faultsources &= (u32)0xFF;
;;;711 }
;;;712 }
;;;713 else
;;;714 {
;;;715 faultsources = SCB->DFSR;
;;;716 }
;;;717 return faultsources;
;;;718 }
000298 4770 BX lr
|L1.666|
00029a 2901 CMP r1,#1 ;701
00029c d10a BNE |L1.692|
00029e f8d2f8d2 LDR r1,[r2,#0xd28] ;703
0002a2 00c2 LSLS r2,r0,#3 ;703
0002a4 40d1 LSRS r1,r1,r2 ;703
0002a6 2802 CMP r0,#2 ;704
0002a8 d002 BEQ |L1.688|
0002aa f001f001 AND r0,r1,#0xf ;706
0002ae 4770 BX lr
|L1.688|
0002b0 b2c8 UXTB r0,r1 ;710
0002b2 4770 BX lr
|L1.692|
0002b4 f8d2f8d2 LDR r0,[r2,#0xd30] ;715
0002b8 4770 BX lr
;;;719
ENDP
NVIC_GetFaultAddress PROC
;;;739
;;;740 tmp = (SystemHandler >> 0x16) & (u32)0x01;
0002ba f3c0f3c0 UBFX r0,r0,#22,#1
;;;741
;;;742 if (tmp == 0x00)
0002be f04ff04f MOV r1,#0xe000e000
0002c2 b910 CBNZ r0,|L1.714|
;;;743 {
;;;744 faultaddress = SCB->MMFAR;
0002c4 f8d1f8d1 LDR r0,[r1,#0xd34]
;;;745 }
;;;746 else
;;;747 {
;;;748 faultaddress = SCB->BFAR;
;;;749 }
;;;750 return faultaddress;
;;;751 }
0002c8 4770 BX lr
|L1.714|
0002ca f8d1f8d1 LDR r0,[r1,#0xd38] ;748
0002ce 4770 BX lr
;;;752
ENDP
|L1.720|
0002d0 e000ed04 DCD 0xe000ed04
|L1.724|
0002d4 05fa0000 DCD 0x05fa0000
|L1.728|
0002d8 e000ef00 DCD 0xe000ef00
|L1.732|
0002dc 1fffff80 DCD 0x1fffff80
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -