📄 stm32f10x_nvic.txt
字号:
AREA ||i.NVIC_SystemHandlerPriorityConfig||, CODE, READONLY, ALIGN=1
NVIC_SystemHandlerPriorityConfig PROC
;;;510 u8 SystemHandlerSubPriority)
;;;511 {
000000 b570 PUSH {r4-r6,lr}
;;;512 u32 tmp1 = 0x00, tmp2 = 0xFF, handlermask = 0x00;
;;;513 u32 tmppriority = 0x00;
;;;514
;;;515 /* Check the parameters */
;;;516 assert_param(IS_PRIORITY_SYSTEM_HANDLER(SystemHandler));
;;;517 assert_param(IS_NVIC_PREEMPTION_PRIORITY(SystemHandlerPreemptionPriority));
;;;518 assert_param(IS_NVIC_SUB_PRIORITY(SystemHandlerSubPriority));
;;;519
;;;520 tmppriority = (0x700 - (SCB->AIRCR & (u32)0x700))>> 0x08;
000002 f04ff04f MOV r6,#0xe000e000
000006 f8d6f8d6 LDR r3,[r6,#0xd0c]
00000a 24ff MOVS r4,#0xff
00000c f403f403 AND r3,r3,#0x700
000010 f5c3f5c3 RSB r3,r3,#0x700
000014 0a1b LSRS r3,r3,#8
;;;521 tmp1 = (0x4 - tmppriority);
;;;522 tmp2 = tmp2 >> tmppriority;
000016 40dc LSRS r4,r4,r3
000018 f1c3f1c3 RSB r5,r3,#4
;;;523
;;;524 tmppriority = (u32)SystemHandlerPreemptionPriority << tmp1;
00001c 40a9 LSLS r1,r1,r5
;;;525 tmppriority |= SystemHandlerSubPriority & tmp2;
00001e 4022 ANDS r2,r2,r4
000020 430a ORRS r2,r2,r1
;;;526
;;;527 tmppriority = tmppriority << 0x04;
000022 0111 LSLS r1,r2,#4
;;;528 tmp1 = SystemHandler & (u32)0xC0;
000024 f000f000 AND r2,r0,#0xc0
;;;529 tmp1 = tmp1 >> 0x06;
000028 0992 LSRS r2,r2,#6
;;;530 tmp2 = (SystemHandler >> 0x08) & (u32)0x03;
00002a f3c0f3c0 UBFX r0,r0,#8,#2
;;;531 tmppriority = tmppriority << (tmp2 * 0x08);
00002e 00c0 LSLS r0,r0,#3
000030 4081 LSLS r1,r1,r0
;;;532 handlermask = (u32)0xFF << (tmp2 * 0x08);
000032 23ff MOVS r3,#0xff
000034 4083 LSLS r3,r3,r0
;;;533
;;;534 SCB->SHPR[tmp1] &= ~handlermask;
000036 eb06eb06 ADD r0,r6,r2,LSL #2
00003a f600f600 ADD r0,r0,#0xd18
00003e 6802 LDR r2,[r0,#0]
000040 439a BICS r2,r2,r3
000042 6002 STR r2,[r0,#0]
;;;535 SCB->SHPR[tmp1] |= tmppriority;
000044 6802 LDR r2,[r0,#0]
000046 430a ORRS r2,r2,r1
000048 6002 STR r2,[r0,#0]
;;;536 }
00004a bd70 POP {r4-r6,pc}
ENDP
AREA ||i.NVIC_GetSystemHandlerPendingBitStatus||, CODE, READONLY, ALIGN=2
NVIC_GetSystemHandlerPendingBitStatus PROC
;;;551 ITStatus NVIC_GetSystemHandlerPendingBitStatus(u32 SystemHandler)
;;;552 {
000000 4601 MOV r1,r0
;;;553 ITStatus bitstatus = RESET;
;;;554 u32 tmp = 0x00, tmppos = 0x00;
;;;555
;;;556 /* Check the parameters */
;;;557 assert_param(IS_GET_PENDING_SYSTEM_HANDLER(SystemHandler));
;;;558
;;;559 tmppos = (SystemHandler >> 0x0A);
;;;560 tmppos &= (u32)0x0F;
000002 f3c1f3c1 UBFX r2,r1,#10,#4
000006 2000 MOVS r0,#0
;;;561
;;;562 tmppos = (u32)0x01 << tmppos;
000008 2101 MOVS r1,#1
00000a 4091 LSLS r1,r1,r2
00000c 4a03 LDR r2,|L25.28|
;;;563
;;;564 tmp = SCB->SHCSR & tmppos;
00000e 6812 LDR r2,[r2,#0]
000010 400a ANDS r2,r2,r1
;;;565
;;;566 if (tmp == tmppos)
000012 428a CMP r2,r1
000014 d100 BNE |L25.24|
;;;567 {
;;;568 bitstatus = SET;
000016 2001 MOVS r0,#1
|L25.24|
;;;569 }
;;;570 else
;;;571 {
;;;572 bitstatus = RESET;
;;;573 }
;;;574 return bitstatus;
;;;575 }
000018 4770 BX lr
ENDP
00001a 0000 DCW 0x0000
|L25.28|
00001c e000ed24 DCD 0xe000ed24
AREA ||i.NVIC_SetSystemHandlerPendingBit||, CODE, READONLY, ALIGN=2
NVIC_SetSystemHandlerPendingBit PROC
;;;596 /* Get the System Handler pending bit position */
;;;597 tmp = SystemHandler & (u32)0x1F;
000000 4904 LDR r1,|L26.20|
000002 f000f000 AND r0,r0,#0x1f
;;;598 /* Set the corresponding System Handler pending bit */
;;;599 SCB->ICSR |= ((u32)0x01 << tmp);
000006 680b LDR r3,[r1,#0]
000008 2201 MOVS r2,#1
00000a 4082 LSLS r2,r2,r0
00000c 4313 ORRS r3,r3,r2
00000e 600b STR r3,[r1,#0]
;;;600 }
000010 4770 BX lr
ENDP
000012 0000 DCW 0x0000
|L26.20|
000014 e000ed04 DCD 0xe000ed04
AREA ||i.NVIC_ClearSystemHandlerPendingBit||, CODE, READONLY, ALIGN=2
NVIC_ClearSystemHandlerPendingBit PROC
;;;620 /* Get the System Handler pending bit position */
;;;621 tmp = SystemHandler & (u32)0x1F;
000000 4b04 LDR r3,|L27.20|
000002 f000f000 AND r0,r0,#0x1f
;;;622 /* Clear the corresponding System Handler pending bit */
;;;623 SCB->ICSR |= ((u32)0x01 << (tmp - 0x01));
000006 6819 LDR r1,[r3,#0]
000008 1e40 SUBS r0,r0,#1
00000a 2201 MOVS r2,#1
00000c 4082 LSLS r2,r2,r0
00000e 4311 ORRS r1,r1,r2
000010 6019 STR r1,[r3,#0]
;;;624 }
000012 4770 BX lr
ENDP
|L27.20|
000014 e000ed04 DCD 0xe000ed04
AREA ||i.NVIC_GetSystemHandlerActiveBitStatus||, CODE, READONLY, ALIGN=2
NVIC_GetSystemHandlerActiveBitStatus PROC
;;;643 ITStatus NVIC_GetSystemHandlerActiveBitStatus(u32 SystemHandler)
;;;644 {
000000 4601 MOV r1,r0
;;;645 ITStatus bitstatus = RESET;
;;;646
;;;647 u32 tmp = 0x00, tmppos = 0x00;
;;;648
;;;649 /* Check the parameters */
;;;650 assert_param(IS_GET_ACTIVE_SYSTEM_HANDLER(SystemHandler));
;;;651
;;;652 tmppos = (SystemHandler >> 0x0E) & (u32)0x0F;
000002 f3c1f3c1 UBFX r2,r1,#14,#4
000006 2000 MOVS r0,#0
;;;653
;;;654 tmppos = (u32)0x01 << tmppos;
000008 2101 MOVS r1,#1
00000a 4091 LSLS r1,r1,r2
00000c 4a03 LDR r2,|L28.28|
;;;655
;;;656 tmp = SCB->SHCSR & tmppos;
00000e 6812 LDR r2,[r2,#0]
000010 400a ANDS r2,r2,r1
;;;657
;;;658 if (tmp == tmppos)
000012 428a CMP r2,r1
000014 d100 BNE |L28.24|
;;;659 {
;;;660 bitstatus = SET;
000016 2001 MOVS r0,#1
|L28.24|
;;;661 }
;;;662 else
;;;663 {
;;;664 bitstatus = RESET;
;;;665 }
;;;666 return bitstatus;
;;;667 }
000018 4770 BX lr
ENDP
00001a 0000 DCW 0x0000
|L28.28|
00001c e000ed24 DCD 0xe000ed24
AREA ||i.NVIC_GetFaultHandlerSources||, CODE, READONLY, ALIGN=1
NVIC_GetFaultHandlerSources PROC
;;;690
;;;691 tmpreg = (SystemHandler >> 0x12) & (u32)0x03;
000000 f3c0f3c0 UBFX r1,r0,#18,#2
;;;692 tmppos = (SystemHandler >> 0x14) & (u32)0x03;
000004 f3c0f3c0 UBFX r0,r0,#20,#2
000008 f04ff04f MOV r2,#0xe000e000
;;;693
;;;694 if (tmpreg == 0x00)
00000c b911 CBNZ r1,|L29.20|
;;;695 {
;;;696 faultsources = SCB->HFSR;
00000e f8d2f8d2 LDR r0,[r2,#0xd2c]
;;;697 }
;;;698 else if (tmpreg == 0x01)
;;;699 {
;;;700 faultsources = SCB->CFSR >> (tmppos * 0x08);
;;;701 if (tmppos != 0x02)
;;;702 {
;;;703 faultsources &= (u32)0x0F;
;;;704 }
;;;705 else
;;;706 {
;;;707 faultsources &= (u32)0xFF;
;;;708 }
;;;709 }
;;;710 else
;;;711 {
;;;712 faultsources = SCB->DFSR;
;;;713 }
;;;714 return faultsources;
;;;715 }
000012 4770 BX lr
|L29.20|
000014 2901 CMP r1,#1
000016 d10a BNE |L29.46|
000018 f8d2f8d2 LDR r1,[r2,#0xd28]
00001c 00c2 LSLS r2,r0,#3
00001e 40d1 LSRS r1,r1,r2
000020 2802 CMP r0,#2
000022 d002 BEQ |L29.42|
000024 f001f001 AND r0,r1,#0xf
000028 4770 BX lr
|L29.42|
00002a b2c8 UXTB r0,r1
00002c 4770 BX lr
|L29.46|
00002e f8d2f8d2 LDR r0,[r2,#0xd30]
000032 4770 BX lr
ENDP
AREA ||i.NVIC_GetFaultAddress||, CODE, READONLY, ALIGN=1
NVIC_GetFaultAddress PROC
;;;736
;;;737 tmp = (SystemHandler >> 0x16) & (u32)0x01;
000000 f3c0f3c0 UBFX r0,r0,#22,#1
000004 f04ff04f MOV r1,#0xe000e000
;;;738
;;;739 if (tmp == 0x00)
000008 b910 CBNZ r0,|L30.16|
;;;740 {
;;;741 faultaddress = SCB->MMFAR;
00000a f8d1f8d1 LDR r0,[r1,#0xd34]
;;;742 }
;;;743 else
;;;744 {
;;;745 faultaddress = SCB->BFAR;
;;;746 }
;;;747 return faultaddress;
;;;748 }
00000e 4770 BX lr
|L30.16|
000010 f8d1f8d1 LDR r0,[r1,#0xd38]
000014 4770 BX lr
ENDP
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -