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

📄 stm32f10x_nvic.txt

📁 STM32 ARM 处理器的ADC采样源代码
💻 TXT
📖 第 1 页 / 共 3 页
字号:
0002ae  f000f000          AND      r3,r0,#0xc0
;;;534      tmp1 = tmp1 >> 0x06; 
0002b2  099b              LSRS     r3,r3,#6
;;;535      tmp2 = (SystemHandler >> 0x08) & (u32)0x03;
0002b4  f3c0f3c0          UBFX     r4,r0,#8,#2
;;;536      tmppriority = tmppriority << (tmp2 * 0x08);
0002b8  00e7              LSLS     r7,r4,#3
0002ba  40be              LSLS     r6,r6,r7
;;;537      handlermask = (u32)0xFF << (tmp2 * 0x08);
0002bc  ea4fea4f          LSL      r12,r4,#3
0002c0  27ff              MOVS     r7,#0xff
0002c2  fa07fa07          LSL      r5,r7,r12
;;;538      
;;;539      SCB->SystemPriority[tmp1] &= ~handlermask;
0002c6  4f45              LDR      r7,|L1.988|
0002c8  3714              ADDS     r7,r7,#0x14
0002ca  f857f857          LDR      r12,[r7,r3,LSL #2]
0002ce  ea2cea2c          BIC      r12,r12,r5
0002d2  f847f847          STR      r12,[r7,r3,LSL #2]
;;;540      SCB->SystemPriority[tmp1] |= tmppriority;
0002d6  f857f857          LDR      r12,[r7,r3,LSL #2]
0002da  ea4cea4c          ORR      r12,r12,r6
0002de  f847f847          STR      r12,[r7,r3,LSL #2]
;;;541    }
0002e2  bdf0              POP      {r4-r7,pc}
                          ENDP

                  NVIC_GetSystemHandlerPendingBitStatus PROC
;;;556    ITStatus NVIC_GetSystemHandlerPendingBitStatus(u32 SystemHandler)
;;;557    {
0002e4  b510              PUSH     {r4,lr}
0002e6  4601              MOV      r1,r0
;;;558      ITStatus bitstatus  = RESET;
0002e8  2000              MOVS     r0,#0
;;;559      u32 tmp = 0x00, tmppos = 0x00;
0002ea  2200              MOVS     r2,#0
0002ec  2300              MOVS     r3,#0
;;;560    
;;;561      /* Check the parameters */
;;;562      assert(IS_GET_PENDING_SYSTEM_HANDLER(SystemHandler));
;;;563      
;;;564      tmppos = (SystemHandler >> 0x0A);
0002ee  0a8b              LSRS     r3,r1,#10
;;;565      tmppos &= (u32)0x0F;
0002f0  f003f003          AND      r3,r3,#0xf
;;;566    
;;;567      tmppos = (u32)0x01 << tmppos;
0002f4  2401              MOVS     r4,#1
0002f6  fa04fa04          LSL      r3,r4,r3
;;;568    
;;;569      tmp = SCB->SysHandlerCtrl & tmppos;
0002fa  4c38              LDR      r4,|L1.988|
0002fc  3420              ADDS     r4,r4,#0x20
0002fe  6824              LDR      r4,[r4,#0]
000300  ea04ea04          AND      r2,r4,r3
;;;570    
;;;571      if (tmp == tmppos)
000304  429a              CMP      r2,r3
000306  d101              BNE      |L1.780|
;;;572      {
;;;573        bitstatus = SET;
000308  2001              MOVS     r0,#1
00030a  e000              B        |L1.782|
                  |L1.780|
;;;574      }
;;;575      else
;;;576      {
;;;577        bitstatus = RESET;
00030c  2000              MOVS     r0,#0
                  |L1.782|
;;;578      }
;;;579      return bitstatus;
;;;580    }
00030e  bd10              POP      {r4,pc}
                          ENDP

                  NVIC_SetSystemHandlerPendingBit PROC
;;;595    {
;;;596      u32 tmp = 0x00;
000310  2100              MOVS     r1,#0
;;;597    
;;;598      /* Check the parameters */
;;;599      assert(IS_SET_PENDING_SYSTEM_HANDLER(SystemHandler));
;;;600      
;;;601      /* Get the System Handler pending bit position */
;;;602      tmp = SystemHandler & (u32)0x1F;
000312  f000f000          AND      r1,r0,#0x1f
;;;603      /* Set the corresponding System Handler pending bit */
;;;604      SCB->IRQControlState |= ((u32)0x01 << tmp);
000316  4a31              LDR      r2,|L1.988|
000318  6813              LDR      r3,[r2,#0]
00031a  2201              MOVS     r2,#1
00031c  408a              LSLS     r2,r2,r1
00031e  4313              ORRS     r3,r3,r2
000320  f04ff04f          MOV      r2,#0xe000e000
000324  f8c2f8c2          STR      r3,[r2,#0xd04]
;;;605    }
000328  4770              BX       lr
                          ENDP

                  NVIC_ClearSystemHandlerPendingBit PROC
;;;618    void NVIC_ClearSystemHandlerPendingBit(u32 SystemHandler)
;;;619    {
00032a  b510              PUSH     {r4,lr}
;;;620      u32 tmp = 0x00;
00032c  2100              MOVS     r1,#0
;;;621    
;;;622      /* Check the parameters */
;;;623      assert(IS_CLEAR_SYSTEM_HANDLER(SystemHandler));
;;;624      
;;;625      /* Get the System Handler pending bit position */
;;;626      tmp = SystemHandler & (u32)0x1F;
00032e  f000f000          AND      r1,r0,#0x1f
;;;627      /* Clear the corresponding System Handler pending bit */
;;;628      SCB->IRQControlState |= ((u32)0x01 << (tmp - 0x01));
000332  4a2a              LDR      r2,|L1.988|
000334  6813              LDR      r3,[r2,#0]
000336  1e4c              SUBS     r4,r1,#1
000338  2201              MOVS     r2,#1
00033a  40a2              LSLS     r2,r2,r4
00033c  4313              ORRS     r3,r3,r2
00033e  f04ff04f          MOV      r2,#0xe000e000
000342  f8c2f8c2          STR      r3,[r2,#0xd04]
;;;629    }
000346  bd10              POP      {r4,pc}
                          ENDP

                  NVIC_GetSystemHandlerActiveBitStatus PROC
;;;648    ITStatus NVIC_GetSystemHandlerActiveBitStatus(u32 SystemHandler)
;;;649    {
000348  b510              PUSH     {r4,lr}
00034a  4601              MOV      r1,r0
;;;650      ITStatus bitstatus  = RESET;
00034c  2000              MOVS     r0,#0
;;;651    
;;;652      u32 tmp = 0x00, tmppos = 0x00;
00034e  2300              MOVS     r3,#0
000350  2200              MOVS     r2,#0
;;;653    
;;;654      /* Check the parameters */
;;;655      assert(IS_GET_ACTIVE_SYSTEM_HANDLER(SystemHandler));
;;;656      
;;;657      tmppos = (SystemHandler >> 0x0E) & (u32)0x0F;
000352  f3c1f3c1          UBFX     r2,r1,#14,#4
;;;658    
;;;659      tmppos = (u32)0x01 << tmppos;
000356  2401              MOVS     r4,#1
000358  fa04fa04          LSL      r2,r4,r2
;;;660    
;;;661      tmp = SCB->SysHandlerCtrl & tmppos;
00035c  4c1f              LDR      r4,|L1.988|
00035e  3420              ADDS     r4,r4,#0x20
000360  6824              LDR      r4,[r4,#0]
000362  ea04ea04          AND      r3,r4,r2
;;;662    
;;;663      if (tmp == tmppos)
000366  4293              CMP      r3,r2
000368  d101              BNE      |L1.878|
;;;664      {
;;;665        bitstatus = SET;
00036a  2001              MOVS     r0,#1
00036c  e000              B        |L1.880|
                  |L1.878|
;;;666      }
;;;667      else
;;;668      {
;;;669        bitstatus = RESET;
00036e  2000              MOVS     r0,#0
                  |L1.880|
;;;670      }
;;;671      return bitstatus;
;;;672    }
000370  bd10              POP      {r4,pc}
                          ENDP

                  NVIC_GetFaultHandlerSources PROC
;;;688    u32 NVIC_GetFaultHandlerSources(u32 SystemHandler)
;;;689    {
000372  b530              PUSH     {r4,r5,lr}
000374  4601              MOV      r1,r0
;;;690      u32 faultsources = 0x00;
000376  2000              MOVS     r0,#0
;;;691      u32 tmpreg = 0x00, tmppos = 0x00;
000378  2200              MOVS     r2,#0
00037a  2300              MOVS     r3,#0
;;;692    
;;;693      /* Check the parameters */
;;;694      assert(IS_FAULT_SOURCE_SYSTEM_HANDLER(SystemHandler));
;;;695      
;;;696      tmpreg = (SystemHandler >> 0x12) & (u32)0x03;
00037c  f3c1f3c1          UBFX     r2,r1,#18,#2
;;;697      tmppos = (SystemHandler >> 0x14) & (u32)0x03;
000380  f3c1f3c1          UBFX     r3,r1,#20,#2
;;;698    
;;;699      if (tmpreg == 0x00)
000384  b91a              CBNZ     r2,|L1.910|
;;;700      {
;;;701        faultsources = SCB->HardFaultStatus;
000386  4c15              LDR      r4,|L1.988|
000388  3428              ADDS     r4,r4,#0x28
00038a  6820              LDR      r0,[r4,#0]
00038c  e011              B        |L1.946|
                  |L1.910|
;;;702      }
;;;703      else if (tmpreg == 0x01)
00038e  2a01              CMP      r2,#1
000390  d10c              BNE      |L1.940|
;;;704      {
;;;705        faultsources = SCB->ConfigFaultStatus >> (tmppos * 0x08);
000392  4c12              LDR      r4,|L1.988|
000394  3424              ADDS     r4,r4,#0x24
000396  6824              LDR      r4,[r4,#0]
000398  00dd              LSLS     r5,r3,#3
00039a  fa24fa24          LSR      r0,r4,r5
;;;706        if (tmppos != 0x02)
00039e  2b02              CMP      r3,#2
0003a0  d002              BEQ      |L1.936|
;;;707        {
;;;708          faultsources &= (u32)0x0F;
0003a2  f000f000          AND      r0,r0,#0xf
0003a6  e004              B        |L1.946|
                  |L1.936|
;;;709        }
;;;710        else
;;;711        {
;;;712          faultsources &= (u32)0xFF;
0003a8  b2c0              UXTB     r0,r0
0003aa  e002              B        |L1.946|
                  |L1.940|
;;;713        }
;;;714      }
;;;715      else
;;;716      {
;;;717        faultsources = SCB->DebugFaultStatus;
0003ac  4c0b              LDR      r4,|L1.988|
0003ae  342c              ADDS     r4,r4,#0x2c
0003b0  6820              LDR      r0,[r4,#0]
                  |L1.946|
;;;718      }
;;;719      return faultsources;
;;;720    }
0003b2  bd30              POP      {r4,r5,pc}
                          ENDP

                  NVIC_GetFaultAddress PROC
;;;734    u32 NVIC_GetFaultAddress(u32 SystemHandler)
;;;735    {
0003b4  4601              MOV      r1,r0
;;;736      u32 faultaddress = 0x00;
0003b6  2000              MOVS     r0,#0
;;;737      u32 tmp = 0x00;
0003b8  2200              MOVS     r2,#0
;;;738    
;;;739      /* Check the parameters */
;;;740      assert(IS_FAULT_ADDRESS_SYSTEM_HANDLER(SystemHandler));
;;;741      
;;;742      tmp = (SystemHandler >> 0x16) & (u32)0x01;
0003ba  f3c1f3c1          UBFX     r2,r1,#22,#1
;;;743    
;;;744      if (tmp == 0x00)
0003be  b91a              CBNZ     r2,|L1.968|
;;;745      {
;;;746        faultaddress = SCB->MemoryManageFaultAddr;
0003c0  4b06              LDR      r3,|L1.988|
0003c2  3330              ADDS     r3,r3,#0x30
0003c4  6818              LDR      r0,[r3,#0]
0003c6  e002              B        |L1.974|
                  |L1.968|
;;;747      }
;;;748      else
;;;749      {
;;;750        faultaddress = SCB->BusFaultAddr;
0003c8  4b04              LDR      r3,|L1.988|
0003ca  3334              ADDS     r3,r3,#0x34
0003cc  6818              LDR      r0,[r3,#0]
                  |L1.974|
;;;751      }
;;;752      return faultaddress;
;;;753    }
0003ce  4770              BX       lr
                          ENDP

                  |L1.976|
0003d0  e000e180          DCD      0xe000e180
                  |L1.980|
0003d4  e000e284          DCD      0xe000e284
                  |L1.984|
0003d8  e000e400          DCD      0xe000e400
                  |L1.988|
0003dc  e000ed04          DCD      0xe000ed04
                  |L1.992|
0003e0  05fa0000          DCD      0x05fa0000
                  |L1.996|
0003e4  e000ef00          DCD      0xe000ef00
                  |L1.1000|
0003e8  1fffff80          DCD      0x1fffff80

⌨️ 快捷键说明

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