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