⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 stm32f10x_nvic.txt

📁 STM32外部SRAM用作datamemery的程序 开发环境MDK
💻 TXT
📖 第 1 页 / 共 3 页
字号:
                          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 + -