📄 stm32f10x_nvic.lst
字号:
\ 00000008 7047 BX LR ;; return
105
106 /*******************************************************************************
107 * Function Name : NVIC_Init
108 * Description : Initializes the NVIC peripheral according to the specified
109 * parameters in the NVIC_InitStruct.
110 * Input : - NVIC_InitStruct: pointer to a NVIC_InitTypeDef structure
111 * that contains the configuration information for the
112 * specified NVIC peripheral.
113 * Output : None
114 * Return : None
115 *******************************************************************************/
\ In section .XML, align 4, keep-with-next
116 void NVIC_Init(NVIC_InitTypeDef* NVIC_InitStruct)
117 {
\ NVIC_Init:
\ 00000000 F3B4 PUSH {R0,R1,R4-R7}
\ 00000002 0100 MOVS R1,R0
118 u32 tmppriority = 0x00, tmpreg = 0x00, tmpmask = 0x00;
\ 00000004 0020 MOVS R0,#+0
\ 00000006 0400 MOVS R4,R0
\ 00000008 0020 MOVS R0,#+0
\ 0000000A 0500 MOVS R5,R0
\ 0000000C 0020 MOVS R0,#+0
\ 0000000E 0200 MOVS R2,R0
119 u32 tmppre = 0, tmpsub = 0x0F;
\ 00000010 0020 MOVS R0,#+0
\ 00000012 0090 STR R0,[SP, #+0]
\ 00000014 0F20 MOVS R0,#+15
\ 00000016 0300 MOVS R3,R0
120
121 /* Check the parameters */
122 assert_param(IS_FUNCTIONAL_STATE(NVIC_InitStruct->NVIC_IRQChannelCmd));
123 assert_param(IS_NVIC_IRQ_CHANNEL(NVIC_InitStruct->NVIC_IRQChannel));
124 assert_param(IS_NVIC_PREEMPTION_PRIORITY(NVIC_InitStruct->NVIC_IRQChannelPreemptionPriority));
125 assert_param(IS_NVIC_SUB_PRIORITY(NVIC_InitStruct->NVIC_IRQChannelSubPriority));
126
127 if (NVIC_InitStruct->NVIC_IRQChannelCmd != DISABLE)
\ 00000018 C878 LDRB R0,[R1, #+3]
\ 0000001A 0028 CMP R0,#+0
\ 0000001C 3FD0 BEQ.N ??NVIC_Init_0
128 {
129 /* Compute the Corresponding IRQ Priority --------------------------------*/
130 tmppriority = (0x700 - (SCB->AIRCR & (u32)0x700))>> 0x08;
\ 0000001E .... LDR.N R0,??DataTable24 ;; 0xe000ed0c
\ 00000020 0068 LDR R0,[R0, #+0]
\ 00000022 10F4E060 ANDS R0,R0,#0x700
\ 00000026 D0F5E060 RSBS R0,R0,#+1792
\ 0000002A 040A LSRS R4,R0,#+8
131 tmppre = (0x4 - tmppriority);
\ 0000002C 0420 MOVS R0,#+4
\ 0000002E 001B SUBS R0,R0,R4
\ 00000030 0090 STR R0,[SP, #+0]
132 tmpsub = tmpsub >> tmppriority;
\ 00000032 E340 LSRS R3,R3,R4
133
134 tmppriority = (u32)NVIC_InitStruct->NVIC_IRQChannelPreemptionPriority << tmppre;
\ 00000034 4878 LDRB R0,[R1, #+1]
\ 00000036 009E LDR R6,[SP, #+0]
\ 00000038 B040 LSLS R0,R0,R6
\ 0000003A 0400 MOVS R4,R0
135 tmppriority |= NVIC_InitStruct->NVIC_IRQChannelSubPriority & tmpsub;
\ 0000003C 2000 MOVS R0,R4
\ 0000003E 8C78 LDRB R4,[R1, #+2]
\ 00000040 1C40 ANDS R4,R4,R3
\ 00000042 0443 ORRS R4,R4,R0
136
137 tmppriority = tmppriority << 0x04;
\ 00000044 2401 LSLS R4,R4,#+4
138 tmppriority = ((u32)tmppriority) << ((NVIC_InitStruct->NVIC_IRQChannel & (u8)0x03) * 0x08);
\ 00000046 0878 LDRB R0,[R1, #+0]
\ 00000048 8007 LSLS R0,R0,#+30 ;; ZeroExtS R0,R0,#+30,#+30
\ 0000004A 800F LSRS R0,R0,#+30
\ 0000004C 0826 MOVS R6,#+8
\ 0000004E 7043 MULS R0,R6,R0
\ 00000050 8440 LSLS R4,R4,R0
139
140 tmpreg = NVIC->IPR[(NVIC_InitStruct->NVIC_IRQChannel >> 0x02)];
\ 00000052 0878 LDRB R0,[R1, #+0]
\ 00000054 8010 ASRS R0,R0,#+2
\ 00000056 0426 MOVS R6,#+4
\ 00000058 7043 MULS R0,R6,R0
\ 0000005A .... LDR.N R6,??DataTable17 ;; 0xe000e400
\ 0000005C 3058 LDR R0,[R6, R0]
\ 0000005E 0500 MOVS R5,R0
141 tmpmask = (u32)0xFF << ((NVIC_InitStruct->NVIC_IRQChannel & (u8)0x03) * 0x08);
\ 00000060 FF20 MOVS R0,#+255
\ 00000062 0E78 LDRB R6,[R1, #+0]
\ 00000064 B607 LSLS R6,R6,#+30 ;; ZeroExtS R6,R6,#+30,#+30
\ 00000066 B60F LSRS R6,R6,#+30
\ 00000068 0827 MOVS R7,#+8
\ 0000006A 7E43 MULS R6,R7,R6
\ 0000006C B040 LSLS R0,R0,R6
\ 0000006E 0200 MOVS R2,R0
142 tmpreg &= ~tmpmask;
\ 00000070 9543 BICS R5,R5,R2
143 tmppriority &= tmpmask;
\ 00000072 1440 ANDS R4,R4,R2
144 tmpreg |= tmppriority;
\ 00000074 2543 ORRS R5,R5,R4
145
146 NVIC->IPR[(NVIC_InitStruct->NVIC_IRQChannel >> 0x02)] = tmpreg;
\ 00000076 0878 LDRB R0,[R1, #+0]
\ 00000078 8010 ASRS R0,R0,#+2
\ 0000007A 0426 MOVS R6,#+4
\ 0000007C 7043 MULS R0,R6,R0
\ 0000007E .... LDR.N R6,??DataTable17 ;; 0xe000e400
\ 00000080 3550 STR R5,[R6, R0]
147
148 /* Enable the Selected IRQ Channels --------------------------------------*/
149 NVIC->ISER[(NVIC_InitStruct->NVIC_IRQChannel >> 0x05)] =
150 (u32)0x01 << (NVIC_InitStruct->NVIC_IRQChannel & (u8)0x1F);
\ 00000082 0878 LDRB R0,[R1, #+0]
\ 00000084 4611 ASRS R6,R0,#+5
\ 00000086 0420 MOVS R0,#+4
\ 00000088 4643 MULS R6,R0,R6
\ 0000008A 0D4F LDR.N R7,??NVIC_Init_1 ;; 0xe000e100
\ 0000008C B446 MOV R12,R6
\ 0000008E 0120 MOVS R0,#+1
\ 00000090 0E78 LDRB R6,[R1, #+0]
\ 00000092 F606 LSLS R6,R6,#+27 ;; ZeroExtS R6,R6,#+27,#+27
\ 00000094 F60E LSRS R6,R6,#+27
\ 00000096 B040 LSLS R0,R0,R6
\ 00000098 6646 MOV R6,R12
\ 0000009A B851 STR R0,[R7, R6]
\ 0000009C 0CE0 B.N ??NVIC_Init_2
151 }
152 else
153 {
154 /* Disable the Selected IRQ Channels -------------------------------------*/
155 NVIC->ICER[(NVIC_InitStruct->NVIC_IRQChannel >> 0x05)] =
156 (u32)0x01 << (NVIC_InitStruct->NVIC_IRQChannel & (u8)0x1F);
\ ??NVIC_Init_0:
\ 0000009E 0878 LDRB R0,[R1, #+0]
\ 000000A0 4611 ASRS R6,R0,#+5
\ 000000A2 0420 MOVS R0,#+4
\ 000000A4 4643 MULS R6,R0,R6
\ 000000A6 .... LDR.N R7,??DataTable18 ;; 0xe000e180
\ 000000A8 B446 MOV R12,R6
\ 000000AA 0120 MOVS R0,#+1
\ 000000AC 0E78 LDRB R6,[R1, #+0]
\ 000000AE F606 LSLS R6,R6,#+27 ;; ZeroExtS R6,R6,#+27,#+27
\ 000000B0 F60E LSRS R6,R6,#+27
\ 000000B2 B040 LSLS R0,R0,R6
\ 000000B4 6646 MOV R6,R12
\ 000000B6 B851 STR R0,[R7, R6]
157 }
158 }
\ ??NVIC_Init_2:
\ 000000B8 02B0 ADD SP,SP,#+8
\ 000000BA F0BC POP {R4-R7}
\ 000000BC 7047 BX LR ;; return
\ 000000BE 00BF Nop
\ ??NVIC_Init_1:
\ 000000C0 00E100E0 DC32 0xe000e100
159
160 /*******************************************************************************
161 * Function Name : NVIC_StructInit
162 * Description : Fills each NVIC_InitStruct member with its default value.
163 * Input : - NVIC_InitStruct: pointer to a NVIC_InitTypeDef structure which
164 * will be initialized.
165 * Output : None
166 * Return : None
167 *******************************************************************************/
\ In section .XML, align 4, keep-with-next
168 void NVIC_StructInit(NVIC_InitTypeDef* NVIC_InitStruct)
169 {
170 /* NVIC_InitStruct members default value */
171 NVIC_InitStruct->NVIC_IRQChannel = 0x00;
\ NVIC_StructInit:
\ 00000000 0021 MOVS R1,#+0
\ 00000002 0170 STRB R1,[R0, #+0]
172 NVIC_InitStruct->NVIC_IRQChannelPreemptionPriority = 0x00;
\ 00000004 0021 MOVS R1,#+0
\ 00000006 4170 STRB R1,[R0, #+1]
173 NVIC_InitStruct->NVIC_IRQChannelSubPriority = 0x00;
\ 00000008 0021 MOVS R1,#+0
\ 0000000A 8170 STRB R1,[R0, #+2]
174 NVIC_InitStruct->NVIC_IRQChannelCmd = DISABLE;
\ 0000000C 0021 MOVS R1,#+0
\ 0000000E C170 STRB R1,[R0, #+3]
175 }
\ 00000010 7047 BX LR ;; return
176
177 /*******************************************************************************
178 * Function Name : NVIC_SETPRIMASK
179 * Description : Enables the PRIMASK priority: Raises the execution priority to 0.
180 * Input : None
181 * Output : None
182 * Return : None
183 *******************************************************************************/
\ In section .XML, align 4, keep-with-next
184 void NVIC_SETPRIMASK(void)
185 {
\ NVIC_SETPRIMASK:
\ 00000000 01B5 PUSH {R0,LR}
186 __SETPRIMASK();
\ 00000002 ........ BL __SETPRIMASK
187 }
\ 00000006 01B0 ADD SP,SP,#+4
\ 00000008 00BD POP {PC} ;; return
188
189 /*******************************************************************************
190 * Function Name : NVIC_RESETPRIMASK
191 * Description : Disables the PRIMASK priority.
192 * Input : None
193 * Output : None
194 * Return : None
195 *******************************************************************************/
\ In section .XML, align 4, keep-with-next
196 void NVIC_RESETPRIMASK(void)
197 {
\ NVIC_RESETPRIMASK:
\ 00000000 01B5 PUSH {R0,LR}
198 __RESETPRIMASK();
\ 00000002 ........ BL __RESETPRIMASK
199 }
\ 00000006 01B0 ADD SP,SP,#+4
\ 00000008 00BD POP {PC} ;; return
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -