📄 stm32f10x_nvic.lst
字号:
200
201 /*******************************************************************************
202 * Function Name : NVIC_SETFAULTMASK
203 * Description : Enables the FAULTMASK priority: Raises the execution priority to -1.
204 * Input : None
205 * Output : None
206 * Return : None
207 *******************************************************************************/
\ In section .XML, align 4, keep-with-next
208 void NVIC_SETFAULTMASK(void)
209 {
\ NVIC_SETFAULTMASK:
\ 00000000 01B5 PUSH {R0,LR}
210 __SETFAULTMASK();
\ 00000002 ........ BL __SETFAULTMASK
211 }
\ 00000006 01B0 ADD SP,SP,#+4
\ 00000008 00BD POP {PC} ;; return
212
213 /*******************************************************************************
214 * Function Name : NVIC_RESETFAULTMASK
215 * Description : Disables the FAULTMASK priority.
216 * Input : None
217 * Output : None
218 * Return : None
219 *******************************************************************************/
\ In section .XML, align 4, keep-with-next
220 void NVIC_RESETFAULTMASK(void)
221 {
\ NVIC_RESETFAULTMASK:
\ 00000000 01B5 PUSH {R0,LR}
222 __RESETFAULTMASK();
\ 00000002 ........ BL __RESETFAULTMASK
223 }
\ 00000006 01B0 ADD SP,SP,#+4
\ 00000008 00BD POP {PC} ;; return
224
225 /*******************************************************************************
226 * Function Name : NVIC_BASEPRICONFIG
227 * Description : The execution priority can be changed from 15 (lowest
228 configurable priority) to 1.
229 * Input : None
230 * Output : None
231 * Return : None
232 *******************************************************************************/
\ In section .XML, align 4, keep-with-next
233 void NVIC_BASEPRICONFIG(u32 NewPriority)
234 {
\ NVIC_BASEPRICONFIG:
\ 00000000 10B5 PUSH {R4,LR}
\ 00000002 0400 MOVS R4,R0
235 /* Check the parameters */
236 assert_param(IS_NVIC_BASE_PRI(NewPriority));
237
238 __BASEPRICONFIG(NewPriority << 0x04);
\ 00000004 2001 LSLS R0,R4,#+4
\ 00000006 ........ BL __BASEPRICONFIG
239 }
\ 0000000A 10BD POP {R4,PC} ;; return
240
241 /*******************************************************************************
242 * Function Name : NVIC_GetBASEPRI
243 * Description : Returns the BASEPRI mask value.
244 * Input : None
245 * Output : None
246 * Return : BASEPRI register value
247 *******************************************************************************/
\ In section .XML, align 4, keep-with-next
248 u32 NVIC_GetBASEPRI(void)
249 {
\ NVIC_GetBASEPRI:
\ 00000000 01B5 PUSH {R0,LR}
250 return (__GetBASEPRI());
\ 00000002 ........ BL __GetBASEPRI
\ 00000006 01B0 ADD SP,SP,#+4
\ 00000008 00BD POP {PC} ;; return
251 }
252
253 /*******************************************************************************
254 * Function Name : NVIC_GetCurrentPendingIRQChannel
255 * Description : Returns the current pending IRQ channel identifier.
256 * Input : None
257 * Output : None
258 * Return : Pending IRQ Channel Identifier.
259 *******************************************************************************/
\ In section .XML, align 4, keep-with-next
260 u16 NVIC_GetCurrentPendingIRQChannel(void)
261 {
262 return ((u16)((SCB->ICSR & (u32)0x003FF000) >> 0x0C));
\ NVIC_GetCurrentPendingIRQChannel:
\ 00000000 .... LDR.N R0,??DataTable21 ;; 0xe000ed04
\ 00000002 0068 LDR R0,[R0, #+0]
\ 00000004 0249 LDR.N R1,??NVIC_GetCurrentPendingIRQChannel_0 ;; 0x3ff000
\ 00000006 0140 ANDS R1,R1,R0
\ 00000008 080B LSRS R0,R1,#+12
\ 0000000A 80B2 UXTH R0,R0 ;; ZeroExtS R0,R0,#+16,#+16
\ 0000000C 7047 BX LR ;; return
\ 0000000E 00BF Nop
\ ??NVIC_GetCurrentPendingIRQChannel_0:
\ 00000010 00F03F00 DC32 0x3ff000
263 }
264
265 /*******************************************************************************
266 * Function Name : NVIC_GetIRQChannelPendingBitStatus
267 * Description : Checks whether the specified IRQ Channel pending bit is set
268 * or not.
269 * Input : - NVIC_IRQChannel: specifies the interrupt pending bit to check.
270 * Output : None
271 * Return : The new state of IRQ Channel pending bit(SET or RESET).
272 *******************************************************************************/
\ In section .XML, align 4, keep-with-next
273 ITStatus NVIC_GetIRQChannelPendingBitStatus(u8 NVIC_IRQChannel)
274 {
\ NVIC_GetIRQChannelPendingBitStatus:
\ 00000000 11B4 PUSH {R0,R4}
\ 00000002 0100 MOVS R1,R0
275 ITStatus pendingirqstatus = RESET;
\ 00000004 0023 MOVS R3,#+0
\ 00000006 1800 MOVS R0,R3
276 u32 tmp = 0x00;
\ 00000008 0023 MOVS R3,#+0
\ 0000000A 1A00 MOVS R2,R3
277
278 /* Check the parameters */
279 assert_param(IS_NVIC_IRQ_CHANNEL(NVIC_IRQChannel));
280
281 tmp = ((u32)0x01 << (NVIC_IRQChannel & (u32)0x1F));
\ 0000000C 0123 MOVS R3,#+1
\ 0000000E CC06 LSLS R4,R1,#+27 ;; ZeroExtS R4,R1,#+27,#+27
\ 00000010 E40E LSRS R4,R4,#+27
\ 00000012 A340 LSLS R3,R3,R4
\ 00000014 1A00 MOVS R2,R3
282
283 if (((NVIC->ISPR[(NVIC_IRQChannel >> 0x05)]) & tmp) == tmp)
\ 00000016 C9B2 UXTB R1,R1 ;; ZeroExtS R1,R1,#+24,#+24
\ 00000018 4B11 ASRS R3,R1,#+5
\ 0000001A 0424 MOVS R4,#+4
\ 0000001C 6343 MULS R3,R4,R3
\ 0000001E 074C LDR.N R4,??NVIC_GetIRQChannelPendingBitStatus_0 ;; 0xe000e200
\ 00000020 E358 LDR R3,[R4, R3]
\ 00000022 1340 ANDS R3,R3,R2
\ 00000024 9342 CMP R3,R2
\ 00000026 02D1 BNE.N ??NVIC_GetIRQChannelPendingBitStatus_1
284 {
285 pendingirqstatus = SET;
\ 00000028 0123 MOVS R3,#+1
\ 0000002A 1800 MOVS R0,R3
\ 0000002C 01E0 B.N ??NVIC_GetIRQChannelPendingBitStatus_2
286 }
287 else
288 {
289 pendingirqstatus = RESET;
\ ??NVIC_GetIRQChannelPendingBitStatus_1:
\ 0000002E 0023 MOVS R3,#+0
\ 00000030 1800 MOVS R0,R3
290 }
291 return pendingirqstatus;
\ ??NVIC_GetIRQChannelPendingBitStatus_2:
\ 00000032 C0B2 UXTB R0,R0 ;; ZeroExtS R0,R0,#+24,#+24
\ 00000034 01B0 ADD SP,SP,#+4
\ 00000036 10BC POP {R4}
\ 00000038 7047 BX LR ;; return
\ 0000003A 00BF Nop
\ ??NVIC_GetIRQChannelPendingBitStatus_0:
\ 0000003C 00E200E0 DC32 0xe000e200
292 }
293
294 /*******************************************************************************
295 * Function Name : NVIC_SetIRQChannelPendingBit
296 * Description : Sets the NVIC抯 interrupt pending bit.
297 * Input : - NVIC_IRQChannel: specifies the interrupt pending bit to Set.
298 * Output : None
299 * Return : None
300 *******************************************************************************/
\ In section .XML, align 4, keep-with-next
301 void NVIC_SetIRQChannelPendingBit(u8 NVIC_IRQChannel)
302 {
303 /* Check the parameters */
304 assert_param(IS_NVIC_IRQ_CHANNEL(NVIC_IRQChannel));
305
306 *(u32*)0xE000EF00 = (u32)NVIC_IRQChannel;
\ NVIC_SetIRQChannelPendingBit:
\ 00000000 0149 LDR.N R1,??NVIC_SetIRQChannelPendingBit_0 ;; 0xe000ef00
\ 00000002 C0B2 UXTB R0,R0 ;; ZeroExtS R0,R0,#+24,#+24
\ 00000004 0860 STR R0,[R1, #+0]
307 }
\ 00000006 7047 BX LR ;; return
\ ??NVIC_SetIRQChannelPendingBit_0:
\ 00000008 00EF00E0 DC32 0xe000ef00
308
309 /*******************************************************************************
310 * Function Name : NVIC_ClearIRQChannelPendingBit
311 * Description : Clears the NVIC抯 interrupt pending bit.
312 * Input : - NVIC_IRQChannel: specifies the interrupt pending bit to clear.
313 * Output : None
314 * Return : None
315 *******************************************************************************/
\ In section .XML, align 4, keep-with-next
316 void NVIC_ClearIRQChannelPendingBit(u8 NVIC_IRQChannel)
317 {
\ NVIC_ClearIRQChannelPendingBit:
\ 00000000 11B4 PUSH {R0,R4}
318 /* Check the parameters */
319 assert_param(IS_NVIC_IRQ_CHANNEL(NVIC_IRQChannel));
320
321 NVIC->ICPR[(NVIC_IRQChannel >> 0x05)] = (u32)0x01 << (NVIC_IRQChannel & (u32)0x1F);
\ 00000002 C0B2 UXTB R0,R0 ;; ZeroExtS R0,R0,#+24,#+24
\ 00000004 4111 ASRS R1,R0,#+5
\ 00000006 0422 MOVS R2,#+4
\ 00000008 5143 MULS R1,R2,R1
\ 0000000A .... LDR.N R2,??DataTable20 ;; 0xe000e280
\ 0000000C 0123 MOVS R3,#+1
\ 0000000E C406 LSLS R4,R0,#+27 ;; ZeroExtS R4,R0,#+27,#+27
\ 00000010 E40E LSRS R4,R4,#+27
\ 00000012 A340 LSLS R3,R3,R4
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -