📄 stm32f10x_nvic.txt
字号:
; generated by ARM/Thumb C/C++ Compiler with , RVCT3.1 [Build 902] for uVision
; commandline ArmCC [--debug -c --asm --interleave -o..\Obj\stm32f10x_nvic.o --depend=..\Obj\stm32f10x_nvic.d --device=DARMSTM -I..\..\..\..\..\INC\ST\STM32F10x -IC:\Keil\ARM\INC\ST\STM32F10x -DVECT_TAB_FLASH --omf_browse=..\Obj\stm32f10x_nvic.crf ..\..\library\src\stm32f10x_nvic.c]
THUMB
AREA ||.text||, CODE, READONLY, ALIGN=2
NVIC_DeInit PROC
;;;42 {
;;;43 u32 index = 0;
000000 2000 MOVS r0,#0
;;;44
;;;45 NVIC->Disable[0] = 0xFFFFFFFF;
000002 1e41 SUBS r1,r0,#1
000004 4af2 LDR r2,|L1.976|
000006 6011 STR r1,[r2,#0]
;;;46 NVIC->Disable[1] = 0x000007FF;
000008 0d4a LSRS r2,r1,#21
00000a 49f1 LDR r1,|L1.976|
00000c 3980 SUBS r1,r1,#0x80
00000e f8c1f8c1 STR r2,[r1,#0x84]
;;;47 NVIC->Clear[0] = 0xFFFFFFFF;
000012 1e41 SUBS r1,r0,#1
000014 f04ff04f MOV r2,#0xe000e000
000018 f8c2f8c2 STR r1,[r2,#0x280]
;;;48 NVIC->Clear[1] = 0x000007FF;
00001c 0d4a LSRS r2,r1,#21
00001e 49ed LDR r1,|L1.980|
000020 600a STR r2,[r1,#0]
;;;49
;;;50 for(index = 0; index < 0x0B; index++)
000022 bf00 NOP
000024 e004 B |L1.48|
|L1.38|
;;;51 {
;;;52 NVIC->Priority[index] = 0x00000000;
000026 2200 MOVS r2,#0
000028 49eb LDR r1,|L1.984|
00002a f841f841 STR r2,[r1,r0,LSL #2]
00002e 1c40 ADDS r0,r0,#1
|L1.48|
000030 280b CMP r0,#0xb
000032 d3f8 BCC |L1.38|
;;;53 }
;;;54 }
000034 4770 BX lr
ENDP
NVIC_SCBDeInit PROC
;;;65 {
;;;66 u32 index = 0x00;
000036 2000 MOVS r0,#0
;;;67
;;;68 SCB->IRQControlState = 0x0A000000;
000038 f04ff04f MOV r1,#0xa000000
00003c 4ae7 LDR r2,|L1.988|
00003e 6011 STR r1,[r2,#0]
;;;69 SCB->ExceptionTableOffset = 0x00000000;
000040 2100 MOVS r1,#0
000042 f04ff04f MOV r2,#0xe000e000
000046 f8c2f8c2 STR r1,[r2,#0xd08]
;;;70 SCB->AIRC = AIRC_VECTKEY_MASK;
00004a 49e5 LDR r1,|L1.992|
00004c 4ae3 LDR r2,|L1.988|
00004e 3208 ADDS r2,r2,#8
000050 6011 STR r1,[r2,#0]
;;;71 SCB->SysCtrl = 0x00000000;
000052 2100 MOVS r1,#0
000054 1d12 ADDS r2,r2,#4
000056 6011 STR r1,[r2,#0]
;;;72 SCB->ConfigCtrl = 0x00000000;
000058 1d12 ADDS r2,r2,#4
00005a 6011 STR r1,[r2,#0]
;;;73 for(index = 0; index < 0x03; index++)
00005c bf00 NOP
00005e e005 B |L1.108|
|L1.96|
;;;74 {
;;;75 SCB->SystemPriority[index] = 0;
000060 2200 MOVS r2,#0
000062 49de LDR r1,|L1.988|
000064 3114 ADDS r1,r1,#0x14
000066 f841f841 STR r2,[r1,r0,LSL #2]
00006a 1c40 ADDS r0,r0,#1
|L1.108|
00006c 2803 CMP r0,#3
00006e d3f7 BCC |L1.96|
;;;76 }
;;;77 SCB->SysHandlerCtrl = 0x00000000;
000070 2100 MOVS r1,#0
000072 4ada LDR r2,|L1.988|
000074 3220 ADDS r2,r2,#0x20
000076 6011 STR r1,[r2,#0]
;;;78 SCB->ConfigFaultStatus = 0xFFFFFFFF;
000078 1e49 SUBS r1,r1,#1
00007a f04ff04f MOV r2,#0xe000e000
00007e f8c2f8c2 STR r1,[r2,#0xd28]
;;;79 SCB->HardFaultStatus = 0xFFFFFFFF;
000082 4ad6 LDR r2,|L1.988|
000084 3228 ADDS r2,r2,#0x28
000086 6011 STR r1,[r2,#0]
;;;80 SCB->DebugFaultStatus = 0xFFFFFFFF;
000088 f04ff04f MOV r2,#0xe000e000
00008c f8c2f8c2 STR r1,[r2,#0xd30]
;;;81 }
000090 4770 BX lr
ENDP
NVIC_PriorityGroupConfig PROC
;;;107 /* Set the PRIGROUP[10:8] bits according to NVIC_PriorityGroup value */
;;;108 SCB->AIRC = AIRC_VECTKEY_MASK | NVIC_PriorityGroup;
000092 49d3 LDR r1,|L1.992|
000094 4301 ORRS r1,r1,r0
000096 4ad1 LDR r2,|L1.988|
000098 3208 ADDS r2,r2,#8
00009a 6011 STR r1,[r2,#0]
;;;109 }
00009c 4770 BX lr
ENDP
NVIC_Init PROC
;;;121 void NVIC_Init(NVIC_InitTypeDef* NVIC_InitStruct)
;;;122 {
00009e b5f0 PUSH {r4-r7,lr}
;;;123 u32 tmppriority = 0x00, tmpreg = 0x00, tmpmask = 0x00;
0000a0 2100 MOVS r1,#0
0000a2 2200 MOVS r2,#0
0000a4 2300 MOVS r3,#0
;;;124 u32 tmppre = 0, tmpsub = 0x0F;
0000a6 2400 MOVS r4,#0
0000a8 250f MOVS r5,#0xf
;;;125
;;;126 /* Check the parameters */
;;;127 assert(IS_FUNCTIONAL_STATE(NVIC_InitStruct->NVIC_IRQChannelCmd));
;;;128 assert(IS_NVIC_IRQ_CHANNEL(NVIC_InitStruct->NVIC_IRQChannel));
;;;129 assert(IS_NVIC_PREEMPTION_PRIORITY(NVIC_InitStruct->NVIC_IRQChannelPreemptionPriority));
;;;130 assert(IS_NVIC_SUB_PRIORITY(NVIC_InitStruct->NVIC_IRQChannelSubPriority));
;;;131
;;;132 if (NVIC_InitStruct->NVIC_IRQChannelCmd != DISABLE)
0000aa 78c6 LDRB r6,[r0,#3]
0000ac 2e00 CMP r6,#0
0000ae d036 BEQ |L1.286|
;;;133 {
;;;134 /* Compute the Corresponding IRQ Priority --------------------------------*/
;;;135 tmppriority = (0x700 - (SCB->AIRC & (u32)0x700))>> 0x08;
0000b0 4eca LDR r6,|L1.988|
0000b2 3608 ADDS r6,r6,#8
0000b4 6836 LDR r6,[r6,#0]
0000b6 f406f406 AND r6,r6,#0x700
0000ba f5c6f5c6 RSB r6,r6,#0x700
0000be 0a31 LSRS r1,r6,#8
;;;136 tmppre = (0x4 - tmppriority);
0000c0 f1c1f1c1 RSB r4,r1,#4
;;;137 tmpsub = tmpsub >> tmppriority;
0000c4 40cd LSRS r5,r5,r1
;;;138
;;;139 tmppriority = (u32)NVIC_InitStruct->NVIC_IRQChannelPreemptionPriority << tmppre;
0000c6 7846 LDRB r6,[r0,#1]
0000c8 fa06fa06 LSL r1,r6,r4
;;;140 tmppriority |= NVIC_InitStruct->NVIC_IRQChannelSubPriority & tmpsub;
0000cc 7886 LDRB r6,[r0,#2]
0000ce 402e ANDS r6,r6,r5
0000d0 4331 ORRS r1,r1,r6
;;;141
;;;142 tmppriority = tmppriority << 0x04;
0000d2 0109 LSLS r1,r1,#4
;;;143 tmppriority = ((u32)tmppriority) << ((NVIC_InitStruct->NVIC_IRQChannel & (u8)0x03) * 0x08);
0000d4 7806 LDRB r6,[r0,#0]
0000d6 07b6 LSLS r6,r6,#30
0000d8 0ef6 LSRS r6,r6,#27
0000da 40b1 LSLS r1,r1,r6
;;;144
;;;145 tmpreg = NVIC->Priority[(NVIC_InitStruct->NVIC_IRQChannel >> 0x02)];
0000dc 4ebe LDR r6,|L1.984|
0000de 7807 LDRB r7,[r0,#0]
0000e0 10bf ASRS r7,r7,#2
0000e2 f856f856 LDR r2,[r6,r7,LSL #2]
;;;146 tmpmask = (u32)0xFF << ((NVIC_InitStruct->NVIC_IRQChannel & (u8)0x03) * 0x08);
0000e6 7806 LDRB r6,[r0,#0]
0000e8 07b6 LSLS r6,r6,#30
0000ea 0ef7 LSRS r7,r6,#27
0000ec 26ff MOVS r6,#0xff
0000ee fa06fa06 LSL r3,r6,r7
;;;147 tmpreg &= ~tmpmask;
0000f2 439a BICS r2,r2,r3
;;;148 tmppriority &= tmpmask;
0000f4 4019 ANDS r1,r1,r3
;;;149 tmpreg |= tmppriority;
0000f6 430a ORRS r2,r2,r1
;;;150
;;;151 NVIC->Priority[(NVIC_InitStruct->NVIC_IRQChannel >> 0x02)] = tmpreg;
0000f8 4eb7 LDR r6,|L1.984|
0000fa 7807 LDRB r7,[r0,#0]
0000fc 10bf ASRS r7,r7,#2
0000fe f846f846 STR r2,[r6,r7,LSL #2]
;;;152
;;;153 /* Enable the Selected IRQ Channels --------------------------------------*/
;;;154 NVIC->Enable[(NVIC_InitStruct->NVIC_IRQChannel >> 0x05)] =
000102 7806 LDRB r6,[r0,#0]
000104 f006f006 AND r7,r6,#0x1f
000108 2601 MOVS r6,#1
00010a 40be LSLS r6,r6,r7
00010c 7807 LDRB r7,[r0,#0]
00010e 117f ASRS r7,r7,#5
000110 f04ff04f MOV r12,#0xe000e000
000114 eb0ceb0c ADD r7,r12,r7,LSL #2
000118 f8c7f8c7 STR r6,[r7,#0x100]
00011c e00b B |L1.310|
|L1.286|
;;;155 (u32)0x01 << (NVIC_InitStruct->NVIC_IRQChannel & (u8)0x1F);
;;;156 }
;;;157 else
;;;158 {
;;;159 /* Disable the Selected IRQ Channels -------------------------------------*/
;;;160 NVIC->Disable[(NVIC_InitStruct->NVIC_IRQChannel >> 0x05)] =
00011e 7806 LDRB r6,[r0,#0]
000120 f006f006 AND r6,r6,#0x1f
000124 2701 MOVS r7,#1
000126 40b7 LSLS r7,r7,r6
000128 4ea9 LDR r6,|L1.976|
00012a f890f890 LDRB r12,[r0,#0]
00012e ea4fea4f ASR r12,r12,#5
000132 f846f846 STR r7,[r6,r12,LSL #2]
|L1.310|
;;;161 (u32)0x01 << (NVIC_InitStruct->NVIC_IRQChannel & (u8)0x1F);
;;;162 }
;;;163 }
000136 bdf0 POP {r4-r7,pc}
ENDP
NVIC_StructInit PROC
;;;175 /* NVIC_InitStruct members default value */
;;;176 NVIC_InitStruct->NVIC_IRQChannel = 0x00;
000138 2100 MOVS r1,#0
00013a 7001 STRB r1,[r0,#0]
;;;177 NVIC_InitStruct->NVIC_IRQChannelPreemptionPriority = 0x00;
00013c 7041 STRB r1,[r0,#1]
;;;178 NVIC_InitStruct->NVIC_IRQChannelSubPriority = 0x00;
00013e 7081 STRB r1,[r0,#2]
;;;179 NVIC_InitStruct->NVIC_IRQChannelCmd = DISABLE;
000140 70c1 STRB r1,[r0,#3]
;;;180 }
000142 4770 BX lr
ENDP
NVIC_SETPRIMASK PROC
;;;189 void NVIC_SETPRIMASK(void)
;;;190 {
000144 b510 PUSH {r4,lr}
;;;191 __SETPRIMASK();
000146 f7fff7ff BL __SETPRIMASK
;;;192 }
00014a bd10 POP {r4,pc}
ENDP
NVIC_RESETPRIMASK PROC
;;;201 void NVIC_RESETPRIMASK(void)
;;;202 {
00014c b510 PUSH {r4,lr}
;;;203 __RESETPRIMASK();
00014e f7fff7ff BL __RESETPRIMASK
;;;204 }
000152 bd10 POP {r4,pc}
ENDP
NVIC_SETFAULTMASK PROC
;;;213 void NVIC_SETFAULTMASK(void)
;;;214 {
000154 b510 PUSH {r4,lr}
;;;215 __SETFAULTMASK();
000156 f7fff7ff BL __SETFAULTMASK
;;;216 }
00015a bd10 POP {r4,pc}
ENDP
NVIC_RESETFAULTMASK PROC
;;;225 void NVIC_RESETFAULTMASK(void)
;;;226 {
00015c b510 PUSH {r4,lr}
;;;227 __RESETFAULTMASK();
00015e f7fff7ff BL __RESETFAULTMASK
;;;228 }
000162 bd10 POP {r4,pc}
ENDP
NVIC_BASEPRICONFIG PROC
;;;238 void NVIC_BASEPRICONFIG(u32 NewPriority)
;;;239 {
000164 b510 PUSH {r4,lr}
000166 4604 MOV r4,r0
;;;240 /* Check the parameters */
;;;241 assert(IS_NVIC_BASE_PRI(NewPriority));
;;;242
;;;243 __BASEPRICONFIG(NewPriority << 0x04);
000168 0120 LSLS r0,r4,#4
00016a f7fff7ff BL __BASEPRICONFIG
;;;244 }
00016e bd10 POP {r4,pc}
ENDP
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -