📄 stm32f10x_nvic.txt
字号:
AREA ||i.NVIC_GetCurrentPendingIRQChannel||, CODE, READONLY, ALIGN=2
NVIC_GetCurrentPendingIRQChannel PROC
;;;261 u16 NVIC_GetCurrentPendingIRQChannel(void)
;;;262 {
000000 4802 LDR r0,|L12.12|
;;;263 return ((u16)((SCB->ICSR & (u32)0x003FF000) >> 0x0C));
000002 6800 LDR r0,[r0,#0]
000004 f3c0f3c0 UBFX r0,r0,#12,#10
;;;264 }
000008 4770 BX lr
;;;265
ENDP
00000a 0000 DCW 0x0000
|L12.12|
00000c e000ed04 DCD 0xe000ed04
AREA ||i.NVIC_GetIRQChannelPendingBitStatus||, CODE, READONLY, ALIGN=1
NVIC_GetIRQChannelPendingBitStatus PROC
;;;274 ITStatus NVIC_GetIRQChannelPendingBitStatus(u8 NVIC_IRQChannel)
;;;275 {
000000 4601 MOV r1,r0
;;;276 ITStatus pendingirqstatus = RESET;
;;;277 u32 tmp = 0x00;
;;;278
;;;279 /* Check the parameters */
;;;280 assert_param(IS_NVIC_IRQ_CHANNEL(NVIC_IRQChannel));
;;;281
;;;282 tmp = ((u32)0x01 << (NVIC_IRQChannel & (u32)0x1F));
000002 f001f001 AND r3,r1,#0x1f
000006 2201 MOVS r2,#1
000008 409a LSLS r2,r2,r3
00000a 2000 MOVS r0,#0 ;276
;;;283
;;;284 if (((NVIC->ISPR[(NVIC_IRQChannel >> 0x05)]) & tmp) == tmp)
00000c 0949 LSRS r1,r1,#5
00000e f04ff04f MOV r3,#0xe000e000
000012 eb03eb03 ADD r1,r3,r1,LSL #2
000016 f8d1f8d1 LDR r1,[r1,#0x200]
00001a 438a BICS r2,r2,r1
00001c d100 BNE |L13.32|
;;;285 {
;;;286 pendingirqstatus = SET;
00001e 2001 MOVS r0,#1
|L13.32|
;;;287 }
;;;288 else
;;;289 {
;;;290 pendingirqstatus = RESET;
;;;291 }
;;;292 return pendingirqstatus;
;;;293 }
000020 4770 BX lr
;;;294
ENDP
AREA ||i.NVIC_SetIRQChannelPendingBit||, CODE, READONLY, ALIGN=2
NVIC_SetIRQChannelPendingBit PROC
;;;302 void NVIC_SetIRQChannelPendingBit(u8 NVIC_IRQChannel)
;;;303 {
000000 4901 LDR r1,|L14.8|
;;;304 /* Check the parameters */
;;;305 assert_param(IS_NVIC_IRQ_CHANNEL(NVIC_IRQChannel));
;;;306
;;;307 *(vu32*) 0xE000EF00 = (u32)NVIC_IRQChannel;
000002 6008 STR r0,[r1,#0]
;;;308 }
000004 4770 BX lr
;;;309
ENDP
000006 0000 DCW 0x0000
|L14.8|
000008 e000ef00 DCD 0xe000ef00
AREA ||i.NVIC_ClearIRQChannelPendingBit||, CODE, READONLY, ALIGN=1
NVIC_ClearIRQChannelPendingBit PROC
;;;321
;;;322 NVIC->ICPR[(NVIC_IRQChannel >> 0x05)] = (u32)0x01 << (NVIC_IRQChannel & (u32)0x1F);
000000 f000f000 AND r2,r0,#0x1f
000004 2101 MOVS r1,#1
000006 4091 LSLS r1,r1,r2
000008 0940 LSRS r0,r0,#5
00000a f04ff04f MOV r2,#0xe000e000
00000e eb02eb02 ADD r0,r2,r0,LSL #2
000012 f8c0f8c0 STR r1,[r0,#0x280]
;;;323 }
000016 4770 BX lr
;;;324
ENDP
AREA ||i.NVIC_GetCurrentActiveHandler||, CODE, READONLY, ALIGN=2
NVIC_GetCurrentActiveHandler PROC
;;;333 u16 NVIC_GetCurrentActiveHandler(void)
;;;334 {
000000 4802 LDR r0,|L16.12|
;;;335 return ((u16)(SCB->ICSR & (u32)0x3FF));
000002 6800 LDR r0,[r0,#0]
000004 f3c0f3c0 UBFX r0,r0,#0,#10
;;;336 }
000008 4770 BX lr
;;;337
ENDP
00000a 0000 DCW 0x0000
|L16.12|
00000c e000ed04 DCD 0xe000ed04
AREA ||i.NVIC_GetIRQChannelActiveBitStatus||, CODE, READONLY, ALIGN=1
NVIC_GetIRQChannelActiveBitStatus PROC
;;;346 ITStatus NVIC_GetIRQChannelActiveBitStatus(u8 NVIC_IRQChannel)
;;;347 {
000000 4601 MOV r1,r0
;;;348 ITStatus activeirqstatus = RESET;
;;;349 u32 tmp = 0x00;
;;;350
;;;351 /* Check the parameters */
;;;352 assert_param(IS_NVIC_IRQ_CHANNEL(NVIC_IRQChannel));
;;;353
;;;354 tmp = ((u32)0x01 << (NVIC_IRQChannel & (u32)0x1F));
000002 f001f001 AND r3,r1,#0x1f
000006 2201 MOVS r2,#1
000008 409a LSLS r2,r2,r3
00000a 2000 MOVS r0,#0 ;348
;;;355
;;;356 if (((NVIC->IABR[(NVIC_IRQChannel >> 0x05)]) & tmp) == tmp )
00000c 0949 LSRS r1,r1,#5
00000e f04ff04f MOV r3,#0xe000e000
000012 eb03eb03 ADD r1,r3,r1,LSL #2
000016 f8d1f8d1 LDR r1,[r1,#0x300]
00001a 438a BICS r2,r2,r1
00001c d100 BNE |L17.32|
;;;357 {
;;;358 activeirqstatus = SET;
00001e 2001 MOVS r0,#1
|L17.32|
;;;359 }
;;;360 else
;;;361 {
;;;362 activeirqstatus = RESET;
;;;363 }
;;;364 return activeirqstatus;
;;;365 }
000020 4770 BX lr
;;;366
ENDP
AREA ||i.NVIC_GetCPUID||, CODE, READONLY, ALIGN=2
NVIC_GetCPUID PROC
;;;375 u32 NVIC_GetCPUID(void)
;;;376 {
000000 4801 LDR r0,|L18.8|
;;;377 return (SCB->CPUID);
000002 6800 LDR r0,[r0,#0]
;;;378 }
000004 4770 BX lr
;;;379
ENDP
000006 0000 DCW 0x0000
|L18.8|
000008 e000ed00 DCD 0xe000ed00
AREA ||i.NVIC_SetVectorTable||, CODE, READONLY, ALIGN=2
NVIC_SetVectorTable PROC
;;;398
;;;399 SCB->VTOR = NVIC_VectTab | (Offset & (u32)0x1FFFFF80);
000000 4a02 LDR r2,|L19.12|
000002 4011 ANDS r1,r1,r2
000004 4301 ORRS r1,r1,r0
000006 4802 LDR r0,|L19.16|
000008 6001 STR r1,[r0,#0]
;;;400 }
00000a 4770 BX lr
;;;401
ENDP
|L19.12|
00000c 1fffff80 DCD 0x1fffff80
|L19.16|
000010 e000ed08 DCD 0xe000ed08
AREA ||i.NVIC_GenerateSystemReset||, CODE, READONLY, ALIGN=2
NVIC_GenerateSystemReset PROC
;;;410 {
;;;411 SCB->AIRCR = AIRCR_VECTKEY_MASK | (u32)0x04;
000000 4902 LDR r1,|L20.12|
000002 4801 LDR r0,|L20.8|
000004 6008 STR r0,[r1,#0]
;;;412 }
000006 4770 BX lr
;;;413
ENDP
|L20.8|
000008 05fa0004 DCD 0x05fa0004
|L20.12|
00000c e000ed0c DCD 0xe000ed0c
AREA ||i.NVIC_GenerateCoreReset||, CODE, READONLY, ALIGN=2
NVIC_GenerateCoreReset PROC
;;;422 {
;;;423 SCB->AIRCR = AIRCR_VECTKEY_MASK | (u32)0x01;
000000 4902 LDR r1,|L21.12|
000002 4801 LDR r0,|L21.8|
000004 6008 STR r0,[r1,#0]
;;;424 }
000006 4770 BX lr
;;;425
ENDP
|L21.8|
000008 05fa0001 DCD 0x05fa0001
|L21.12|
00000c e000ed0c DCD 0xe000ed0c
AREA ||i.NVIC_SystemLPConfig||, CODE, READONLY, ALIGN=1
NVIC_SystemLPConfig PROC
;;;440 void NVIC_SystemLPConfig(u8 LowPowerMode, FunctionalState NewState)
;;;441 {
000000 f04ff04f MOV r2,#0xe000e000
;;;442 /* Check the parameters */
;;;443 assert_param(IS_NVIC_LP(LowPowerMode));
;;;444 assert_param(IS_FUNCTIONAL_STATE(NewState));
;;;445
;;;446 if (NewState != DISABLE)
000004 2900 CMP r1,#0
;;;447 {
;;;448 SCB->SCR |= LowPowerMode;
000006 f8d2f8d2 LDR r1,[r2,#0xd10]
00000a d001 BEQ |L22.16|
00000c 4301 ORRS r1,r1,r0
00000e e000 B |L22.18|
|L22.16|
;;;449 }
;;;450 else
;;;451 {
;;;452 SCB->SCR &= (u32)(~(u32)LowPowerMode);
000010 4381 BICS r1,r1,r0
|L22.18|
000012 f8c2f8c2 STR r1,[r2,#0xd10] ;448
;;;453 }
;;;454 }
000016 4770 BX lr
;;;455
ENDP
AREA ||i.NVIC_SystemHandlerConfig||, CODE, READONLY, ALIGN=1
NVIC_SystemHandlerConfig PROC
;;;477
;;;478 tmpreg = (u32)0x01 << (SystemHandler & (u32)0x1F);
000000 f000f000 AND r2,r0,#0x1f
000004 2001 MOVS r0,#1
000006 4090 LSLS r0,r0,r2
000008 f04ff04f MOV r2,#0xe000e000
;;;479
;;;480 if (NewState != DISABLE)
00000c 2900 CMP r1,#0
;;;481 {
;;;482 SCB->SHCSR |= tmpreg;
00000e f8d2f8d2 LDR r1,[r2,#0xd24]
000012 d001 BEQ |L23.24|
000014 4301 ORRS r1,r1,r0
000016 e000 B |L23.26|
|L23.24|
;;;483 }
;;;484 else
;;;485 {
;;;486 SCB->SHCSR &= ~tmpreg;
000018 4381 BICS r1,r1,r0
|L23.26|
00001a f8c2f8c2 STR r1,[r2,#0xd24] ;482
;;;487 }
;;;488 }
00001e 4770 BX lr
;;;489
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -