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

📄 stm32f10x_nvic.txt

📁 STM32 ARM 处理器的ADC采样源代码
💻 TXT
📖 第 1 页 / 共 3 页
字号:

                  NVIC_GetBASEPRI PROC
;;;253    u32 NVIC_GetBASEPRI(void)
;;;254    {
000170  b510              PUSH     {r4,lr}
;;;255      return (__GetBASEPRI());
000172  f7fff7ff          BL       __GetBASEPRI
;;;256    }
000176  bd10              POP      {r4,pc}
                          ENDP

                  NVIC_GetCurrentPendingIRQChannel PROC
;;;266    {
;;;267      return ((u16)((SCB->IRQControlState & (u32)0x003FF000) >> 0x0C));
000178  4898              LDR      r0,|L1.988|
00017a  6800              LDR      r0,[r0,#0]
00017c  f3c0f3c0          UBFX     r0,r0,#12,#10
;;;268    }
000180  4770              BX       lr
                          ENDP

                  NVIC_GetIRQChannelPendingBitStatus PROC
;;;278    ITStatus NVIC_GetIRQChannelPendingBitStatus(u8 NVIC_IRQChannel)
;;;279    {
000182  b510              PUSH     {r4,lr}
000184  4601              MOV      r1,r0
;;;280      ITStatus pendingirqstatus = RESET;
000186  2000              MOVS     r0,#0
;;;281      u32 tmp = 0x00;
000188  2200              MOVS     r2,#0
;;;282      
;;;283      /* Check the parameters */
;;;284      assert(IS_NVIC_IRQ_CHANNEL(NVIC_IRQChannel));
;;;285      
;;;286      tmp = ((u32)0x01 << (NVIC_IRQChannel & (u32)0x1F));
00018a  f001f001          AND      r4,r1,#0x1f
00018e  2301              MOVS     r3,#1
000190  fa03fa03          LSL      r2,r3,r4
;;;287    
;;;288      if (((NVIC->Set[(NVIC_IRQChannel >> 0x05)]) & tmp) == tmp)
000194  4b8e              LDR      r3,|L1.976|
000196  3380              ADDS     r3,r3,#0x80
000198  114c              ASRS     r4,r1,#5
00019a  f853f853          LDR      r3,[r3,r4,LSL #2]
00019e  4013              ANDS     r3,r3,r2
0001a0  4293              CMP      r3,r2
0001a2  d101              BNE      |L1.424|
;;;289      {
;;;290        pendingirqstatus = SET;
0001a4  2001              MOVS     r0,#1
0001a6  e000              B        |L1.426|
                  |L1.424|
;;;291      }
;;;292      else
;;;293      {
;;;294        pendingirqstatus = RESET;
0001a8  2000              MOVS     r0,#0
                  |L1.426|
;;;295      }
;;;296      return pendingirqstatus;
;;;297    }
0001aa  bd10              POP      {r4,pc}
                          ENDP

                  NVIC_SetIRQChannelPendingBit PROC
;;;310      
;;;311      *(u32*)0xE000EF00 = (u32)NVIC_IRQChannel;
0001ac  498d              LDR      r1,|L1.996|
0001ae  6008              STR      r0,[r1,#0]
;;;312    }
0001b0  4770              BX       lr
                          ENDP

                  NVIC_ClearIRQChannelPendingBit PROC
;;;325      
;;;326      NVIC->Clear[(NVIC_IRQChannel >> 0x05)] = (u32)0x01 << (NVIC_IRQChannel & (u32)0x1F);
0001b2  f000f000          AND      r1,r0,#0x1f
0001b6  2201              MOVS     r2,#1
0001b8  408a              LSLS     r2,r2,r1
0001ba  4986              LDR      r1,|L1.980|
0001bc  1f09              SUBS     r1,r1,#4
0001be  1143              ASRS     r3,r0,#5
0001c0  f841f841          STR      r2,[r1,r3,LSL #2]
;;;327    }
0001c4  4770              BX       lr
                          ENDP

                  NVIC_GetCurrentActiveHandler PROC
;;;338    {
;;;339      return ((u16)(SCB->IRQControlState & (u32)0x3FF));
0001c6  4885              LDR      r0,|L1.988|
0001c8  6800              LDR      r0,[r0,#0]
0001ca  f3c0f3c0          UBFX     r0,r0,#0,#10
;;;340    }
0001ce  4770              BX       lr
                          ENDP

                  NVIC_GetIRQChannelActiveBitStatus PROC
;;;350    ITStatus NVIC_GetIRQChannelActiveBitStatus(u8 NVIC_IRQChannel)
;;;351    {
0001d0  b510              PUSH     {r4,lr}
0001d2  4601              MOV      r1,r0
;;;352      ITStatus activeirqstatus = RESET;
0001d4  2000              MOVS     r0,#0
;;;353      u32 tmp = 0x00;
0001d6  2200              MOVS     r2,#0
;;;354    
;;;355      /* Check the parameters */
;;;356      assert(IS_NVIC_IRQ_CHANNEL(NVIC_IRQChannel));
;;;357      
;;;358      tmp = ((u32)0x01 << (NVIC_IRQChannel & (u32)0x1F));
0001d8  f001f001          AND      r4,r1,#0x1f
0001dc  2301              MOVS     r3,#1
0001de  fa03fa03          LSL      r2,r3,r4
;;;359    
;;;360      if (((NVIC->Active[(NVIC_IRQChannel >> 0x05)]) & tmp) == tmp )
0001e2  4b7c              LDR      r3,|L1.980|
0001e4  337c              ADDS     r3,r3,#0x7c
0001e6  114c              ASRS     r4,r1,#5
0001e8  f853f853          LDR      r3,[r3,r4,LSL #2]
0001ec  4013              ANDS     r3,r3,r2
0001ee  4293              CMP      r3,r2
0001f0  d101              BNE      |L1.502|
;;;361      {
;;;362        activeirqstatus = SET;
0001f2  2001              MOVS     r0,#1
0001f4  e000              B        |L1.504|
                  |L1.502|
;;;363      }
;;;364      else
;;;365      {
;;;366        activeirqstatus = RESET;
0001f6  2000              MOVS     r0,#0
                  |L1.504|
;;;367      }
;;;368      return activeirqstatus;
;;;369    }
0001f8  bd10              POP      {r4,pc}
                          ENDP

                  NVIC_GetCPUID PROC
;;;380    {
;;;381      return (SCB->CPUID);
0001fa  4878              LDR      r0,|L1.988|
0001fc  1f00              SUBS     r0,r0,#4
0001fe  6800              LDR      r0,[r0,#0]
;;;382    }
000200  4770              BX       lr
                          ENDP

                  NVIC_SetVectorTable PROC
;;;402       
;;;403      SCB->ExceptionTableOffset = NVIC_VectTab | (Offset & (u32)0x1FFFFF80);
000202  4a79              LDR      r2,|L1.1000|
000204  400a              ANDS     r2,r2,r1
000206  4302              ORRS     r2,r2,r0
000208  4b74              LDR      r3,|L1.988|
00020a  1d1b              ADDS     r3,r3,#4
00020c  601a              STR      r2,[r3,#0]
;;;404    }
00020e  4770              BX       lr
                          ENDP

                  NVIC_GenerateSystemReset PROC
;;;414    {
;;;415      SCB->AIRC = AIRC_VECTKEY_MASK | (u32)0x04;
000210  4873              LDR      r0,|L1.992|
000212  1d00              ADDS     r0,r0,#4
000214  4971              LDR      r1,|L1.988|
000216  3108              ADDS     r1,r1,#8
000218  6008              STR      r0,[r1,#0]
;;;416    }
00021a  4770              BX       lr
                          ENDP

                  NVIC_GenerateCoreReset PROC
;;;426    {
;;;427      SCB->AIRC = AIRC_VECTKEY_MASK | (u32)0x01;
00021c  4870              LDR      r0,|L1.992|
00021e  1c40              ADDS     r0,r0,#1
000220  496e              LDR      r1,|L1.988|
000222  3108              ADDS     r1,r1,#8
000224  6008              STR      r0,[r1,#0]
;;;428    }
000226  4770              BX       lr
                          ENDP

                  NVIC_SystemLPConfig PROC
;;;449      
;;;450      if (NewState != DISABLE)
000228  b141              CBZ      r1,|L1.572|
;;;451      {
;;;452        SCB->SysCtrl |= LowPowerMode;
00022a  4a6c              LDR      r2,|L1.988|
00022c  320c              ADDS     r2,r2,#0xc
00022e  6812              LDR      r2,[r2,#0]
000230  4302              ORRS     r2,r2,r0
000232  f04ff04f          MOV      r3,#0xe000e000
000236  f8c3f8c3          STR      r2,[r3,#0xd10]
00023a  e007              B        |L1.588|
                  |L1.572|
;;;453      }
;;;454      else
;;;455      {
;;;456        SCB->SysCtrl &= (u32)(~(u32)LowPowerMode);
00023c  4a67              LDR      r2,|L1.988|
00023e  320c              ADDS     r2,r2,#0xc
000240  6812              LDR      r2,[r2,#0]
000242  4382              BICS     r2,r2,r0
000244  f04ff04f          MOV      r3,#0xe000e000
000248  f8c3f8c3          STR      r2,[r3,#0xd10]
                  |L1.588|
;;;457      }
;;;458    }
00024c  4770              BX       lr
                          ENDP

                  NVIC_SystemHandlerConfig PROC
;;;474    void NVIC_SystemHandlerConfig(u32 SystemHandler, FunctionalState NewState)
;;;475    {
00024e  b510              PUSH     {r4,lr}
;;;476      u32 tmpreg = 0x00;
000250  2200              MOVS     r2,#0
;;;477    
;;;478      /* Check the parameters */
;;;479      assert(IS_CONFIG_SYSTEM_HANDLER(SystemHandler));
;;;480      assert(IS_FUNCTIONAL_STATE(NewState)); 
;;;481      
;;;482      tmpreg =  (u32)0x01 << (SystemHandler & (u32)0x1F);
000252  f000f000          AND      r4,r0,#0x1f
000256  2301              MOVS     r3,#1
000258  fa03fa03          LSL      r2,r3,r4
;;;483    
;;;484      if (NewState != DISABLE)
00025c  b141              CBZ      r1,|L1.624|
;;;485      {
;;;486        SCB->SysHandlerCtrl |= tmpreg;
00025e  4b5f              LDR      r3,|L1.988|
000260  3320              ADDS     r3,r3,#0x20
000262  681b              LDR      r3,[r3,#0]
000264  4313              ORRS     r3,r3,r2
000266  f04ff04f          MOV      r4,#0xe000e000
00026a  f8c4f8c4          STR      r3,[r4,#0xd24]
00026e  e007              B        |L1.640|
                  |L1.624|
;;;487      }
;;;488      else
;;;489      {
;;;490        SCB->SysHandlerCtrl &= ~tmpreg;
000270  4b5a              LDR      r3,|L1.988|
000272  3320              ADDS     r3,r3,#0x20
000274  681b              LDR      r3,[r3,#0]
000276  4393              BICS     r3,r3,r2
000278  f04ff04f          MOV      r4,#0xe000e000
00027c  f8c4f8c4          STR      r3,[r4,#0xd24]
                  |L1.640|
;;;491      }
;;;492    }
000280  bd10              POP      {r4,pc}
                          ENDP

                  NVIC_SystemHandlerPriorityConfig PROC
;;;515                                          u8 SystemHandlerSubPriority)
;;;516    {
000282  b5f0              PUSH     {r4-r7,lr}
;;;517      u32 tmp1 = 0x00, tmp2 = 0xFF, handlermask = 0x00;
000284  2300              MOVS     r3,#0
000286  24ff              MOVS     r4,#0xff
000288  2500              MOVS     r5,#0
;;;518      u32 tmppriority = 0x00;
00028a  2600              MOVS     r6,#0
;;;519    
;;;520      /* Check the parameters */
;;;521      assert(IS_PRIORITY_SYSTEM_HANDLER(SystemHandler));
;;;522      assert(IS_NVIC_PREEMPTION_PRIORITY(SystemHandlerPreemptionPriority));  
;;;523      assert(IS_NVIC_SUB_PRIORITY(SystemHandlerSubPriority));
;;;524        
;;;525      tmppriority = (0x700 - (SCB->AIRC & (u32)0x700))>> 0x08;
00028c  4f53              LDR      r7,|L1.988|
00028e  3708              ADDS     r7,r7,#8
000290  683f              LDR      r7,[r7,#0]
000292  f407f407          AND      r7,r7,#0x700
000296  f5c7f5c7          RSB      r7,r7,#0x700
00029a  0a3e              LSRS     r6,r7,#8
;;;526      tmp1 = (0x4 - tmppriority);
00029c  f1c6f1c6          RSB      r3,r6,#4
;;;527      tmp2 = tmp2 >> tmppriority;
0002a0  40f4              LSRS     r4,r4,r6
;;;528        
;;;529      tmppriority = (u32)SystemHandlerPreemptionPriority << tmp1;
0002a2  fa01fa01          LSL      r6,r1,r3
;;;530      tmppriority |=  SystemHandlerSubPriority & tmp2;
0002a6  ea02ea02          AND      r7,r2,r4
0002aa  433e              ORRS     r6,r6,r7
;;;531    
;;;532      tmppriority = tmppriority << 0x04;
0002ac  0136              LSLS     r6,r6,#4
;;;533      tmp1 = SystemHandler & (u32)0xC0;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -