📄 stm32f10x_nvic.lst
字号:
\ 00000006 00BD POP {PC} ;; return
214
215 /*******************************************************************************
216 * Function Name : NVIC_RESETFAULTMASK
217 * Description : Disables the FAULTMASK priority.
218 * Input : None
219 * Output : None
220 * Return : None
221 *******************************************************************************/
\ In segment CODE, align 4, keep-with-next
222 void NVIC_RESETFAULTMASK(void)
223 {
\ NVIC_RESETFAULTMASK:
\ 00000000 00B5 PUSH {LR}
224 __RESETFAULTMASK();
\ 00000002 ........ _BLF __RESETFAULTMASK,??__RESETFAULTMASK??rT
225 }
\ 00000006 00BD POP {PC} ;; return
226
227 /*******************************************************************************
228 * Function Name : NVIC_BASEPRICONFIG
229 * Description : The execution priority can be changed from 15 (lowest
230 configurable priority) to 1. Writing a zero value will disable
231 * the mask of execution priority.
232 * Input : None
233 * Output : None
234 * Return : None
235 *******************************************************************************/
\ In segment CODE, align 4, keep-with-next
236 void NVIC_BASEPRICONFIG(u32 NewPriority)
237 {
\ NVIC_BASEPRICONFIG:
\ 00000000 00B5 PUSH {LR}
238 /* Check the parameters */
239 assert_param(IS_NVIC_BASE_PRI(NewPriority));
240
241 __BASEPRICONFIG(NewPriority << 0x04);
\ 00000002 0001 LSLS R0,R0,#+4
\ 00000004 ........ _BLF __BASEPRICONFIG,??__BASEPRICONFIG??rT
242 }
\ 00000008 00BD POP {PC} ;; return
243
244 /*******************************************************************************
245 * Function Name : NVIC_GetBASEPRI
246 * Description : Returns the BASEPRI mask value.
247 * Input : None
248 * Output : None
249 * Return : BASEPRI register value
250 *******************************************************************************/
\ In segment CODE, align 4, keep-with-next
251 u32 NVIC_GetBASEPRI(void)
252 {
\ NVIC_GetBASEPRI:
\ 00000000 00B5 PUSH {LR}
253 return (__GetBASEPRI());
\ 00000002 ........ _BLF __GetBASEPRI,??__GetBASEPRI??rT
\ 00000006 00BD POP {PC} ;; return
254 }
255
256 /*******************************************************************************
257 * Function Name : NVIC_GetCurrentPendingIRQChannel
258 * Description : Returns the current pending IRQ channel identifier.
259 * Input : None
260 * Output : None
261 * Return : Pending IRQ Channel Identifier.
262 *******************************************************************************/
\ In segment CODE, align 4, keep-with-next
263 u16 NVIC_GetCurrentPendingIRQChannel(void)
264 {
265 return ((u16)((SCB->ICSR & (u32)0x003FF000) >> 0x0C));
\ NVIC_GetCurrentPendingIRQChannel:
\ 00000000 .... LDR.N R0,??DataTable31 ;; 0xffffffffe000ed04
\ 00000002 0068 LDR R0,[R0, #+0]
\ 00000004 0249 LDR.N R1,??NVIC_GetCurrentPendingIRQChannel_0 ;; 0x3ff000
\ 00000006 0140 ANDS R1,R1,R0
\ 00000008 0800 MOVS R0,R1
\ 0000000A 000B LSRS R0,R0,#+12
\ 0000000C 7047 BX LR ;; return
\ 0000000E 00BF Nop
\ ??NVIC_GetCurrentPendingIRQChannel_0:
\ 00000010 00F03F00 DC32 0x3ff000
266 }
267
268 /*******************************************************************************
269 * Function Name : NVIC_GetIRQChannelPendingBitStatus
270 * Description : Checks whether the specified IRQ Channel pending bit is set
271 * or not.
272 * Input : - NVIC_IRQChannel: specifies the interrupt pending bit to check.
273 * Output : None
274 * Return : The new state of IRQ Channel pending bit(SET or RESET).
275 *******************************************************************************/
\ In segment CODE, align 4, keep-with-next
276 ITStatus NVIC_GetIRQChannelPendingBitStatus(u8 NVIC_IRQChannel)
277 {
278 ITStatus pendingirqstatus = RESET;
279 u32 tmp = 0x00;
280
281 /* Check the parameters */
282 assert_param(IS_NVIC_IRQ_CHANNEL(NVIC_IRQChannel));
283
284 tmp = ((u32)0x01 << (NVIC_IRQChannel & (u32)0x1F));
\ NVIC_GetIRQChannelPendingBitStatus:
\ 00000000 0121 MOVS R1,#+1
\ 00000002 C206 LSLS R2,R0,#+27
\ 00000004 D20E LSRS R2,R2,#+27
\ 00000006 9140 LSLS R1,R1,R2
285
286 if (((NVIC->ISPR[(NVIC_IRQChannel >> 0x05)]) & tmp) == tmp)
\ 00000008 4011 ASRS R0,R0,#+5
\ 0000000A 054A LDR.N R2,??NVIC_GetIRQChannelPendingBitStatus_0 ;; 0xffffffffe000e200
\ 0000000C 52F82000 LDR R0,[R2, R0, LSL #+2]
\ 00000010 0840 ANDS R0,R0,R1
\ 00000012 8842 CMP R0,R1
\ 00000014 01D1 BNE.N ??NVIC_GetIRQChannelPendingBitStatus_1
287 {
288 pendingirqstatus = SET;
\ 00000016 0120 MOVS R0,#+1
\ 00000018 7047 BX LR
289 }
290 else
291 {
292 pendingirqstatus = RESET;
\ ??NVIC_GetIRQChannelPendingBitStatus_1:
\ 0000001A 0020 MOVS R0,#+0
293 }
294 return pendingirqstatus;
\ 0000001C 7047 BX LR ;; return
\ 0000001E 00BF Nop
\ ??NVIC_GetIRQChannelPendingBitStatus_0:
\ 00000020 00E200E0 DC32 0xffffffffe000e200
295 }
296
297 /*******************************************************************************
298 * Function Name : NVIC_SetIRQChannelPendingBit
299 * Description : Sets the NVIC抯 interrupt pending bit.
300 * Input : - NVIC_IRQChannel: specifies the interrupt pending bit to Set.
301 * Output : None
302 * Return : None
303 *******************************************************************************/
\ In segment CODE, align 4, keep-with-next
304 void NVIC_SetIRQChannelPendingBit(u8 NVIC_IRQChannel)
305 {
306 /* Check the parameters */
307 assert_param(IS_NVIC_IRQ_CHANNEL(NVIC_IRQChannel));
308
309 *(vu32*) 0xE000EF00 = (u32)NVIC_IRQChannel;
\ NVIC_SetIRQChannelPendingBit:
\ 00000000 0149 LDR.N R1,??NVIC_SetIRQChannelPendingBit_0 ;; 0xffffffffe000ef00
\ 00000002 0860 STR R0,[R1, #+0]
310 }
\ 00000004 7047 BX LR ;; return
\ 00000006 00BF Nop
\ ??NVIC_SetIRQChannelPendingBit_0:
\ 00000008 00EF00E0 DC32 0xffffffffe000ef00
311
312 /*******************************************************************************
313 * Function Name : NVIC_ClearIRQChannelPendingBit
314 * Description : Clears the NVIC抯 interrupt pending bit.
315 * Input : - NVIC_IRQChannel: specifies the interrupt pending bit to clear.
316 * Output : None
317 * Return : None
318 *******************************************************************************/
\ In segment CODE, align 4, keep-with-next
319 void NVIC_ClearIRQChannelPendingBit(u8 NVIC_IRQChannel)
320 {
321 /* Check the parameters */
322 assert_param(IS_NVIC_IRQ_CHANNEL(NVIC_IRQChannel));
323
324 NVIC->ICPR[(NVIC_IRQChannel >> 0x05)] = (u32)0x01 << (NVIC_IRQChannel & (u32)0x1F);
\ NVIC_ClearIRQChannelPendingBit:
\ 00000000 0100 MOVS R1,R0
\ 00000002 4911 ASRS R1,R1,#+5
\ 00000004 .... LDR.N R2,??DataTable20 ;; 0xffffffffe000e280
\ 00000006 0123 MOVS R3,#+1
\ 00000008 C006 LSLS R0,R0,#+27
\ 0000000A C00E LSRS R0,R0,#+27
\ 0000000C 8340 LSLS R3,R3,R0
\ 0000000E 42F82130 STR R3,[R2, R1, LSL #+2]
325 }
\ 00000012 7047 BX LR ;; return
326
327 /*******************************************************************************
328 * Function Name : NVIC_GetCurrentActiveHandler
329 * Description : Returns the current active Handler (IRQ Channel and
330 * SystemHandler) identifier.
331 * Input : None
332 * Output : None
333 * Return : Active Handler Identifier.
334 *******************************************************************************/
\ In segment CODE, align 4, keep-with-next
335 u16 NVIC_GetCurrentActiveHandler(void)
336 {
337 return ((u16)(SCB->ICSR & (u32)0x3FF));
\ NVIC_GetCurrentActiveHandler:
\ 00000000 .... LDR.N R0,??DataTable31 ;; 0xffffffffe000ed04
\ 00000002 0068 LDR R0,[R0, #+0]
\ 00000004 8005 LSLS R0,R0,#+22
\ 00000006 800D LSRS R0,R0,#+22
\ 00000008 7047 BX LR ;; return
338 }
339
340 /*******************************************************************************
341 * Function Name : NVIC_GetIRQChannelActiveBitStatus
342 * Description : Checks whether the specified IRQ Channel active bit is set
343 * or not.
344 * Input : - NVIC_IRQChannel: specifies the interrupt active bit to check.
345 * Output : None
346 * Return : The new state of IRQ Channel active bit(SET or RESET).
347 *******************************************************************************/
\ In segment CODE, align 4, keep-with-next
348 ITStatus NVIC_GetIRQChannelActiveBitStatus(u8 NVIC_IRQChannel)
349 {
350 ITStatus activeirqstatus = RESET;
351 u32 tmp = 0x00;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -