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

📄 stm32f10x_nvic.txt

📁 ucos2.86版本结合STM板极支持包
💻 TXT
📖 第 1 页 / 共 2 页
字号:
                  NVIC_GetCPUID PROC
;;;380    {
;;;381      return (SCB->CPUID);
0001b0  4860              LDR      r0,|L1.820|
0001b2  6800              LDR      r0,[r0,#0]
;;;382    }
0001b4  4770              BX       lr
;;;383    
                          ENDP

                  NVIC_SetVectorTable PROC
;;;402       
;;;403      SCB->ExceptionTableOffset = NVIC_VectTab | (Offset & (u32)0x1FFFFF80);
0001b6  f021f021          BIC      r1,r1,#0x7f
0001ba  f021f021          BIC      r1,r1,#0xe0000000
0001be  4308              ORRS     r0,r0,r1
0001c0  495d              LDR      r1,|L1.824|
0001c2  6008              STR      r0,[r1,#0]
;;;404    }
0001c4  4770              BX       lr
;;;405    
                          ENDP

                  NVIC_GenerateSystemReset PROC
;;;414    {
;;;415      SCB->AIRC = AIRC_VECTKEY_MASK | (u32)0x04;
0001c6  4958              LDR      r1,|L1.808|
0001c8  485c              LDR      r0,|L1.828|
0001ca  6008              STR      r0,[r1,#0]
;;;416    }
0001cc  4770              BX       lr
;;;417    
                          ENDP

                  NVIC_GenerateCoreReset PROC
;;;426    {
;;;427      SCB->AIRC = AIRC_VECTKEY_MASK | (u32)0x01;
0001ce  4956              LDR      r1,|L1.808|
0001d0  485b              LDR      r0,|L1.832|
0001d2  6008              STR      r0,[r1,#0]
;;;428    }
0001d4  4770              BX       lr
;;;429    
                          ENDP

                  NVIC_SystemLPConfig PROC
;;;449      
;;;450      if (NewState != DISABLE)
0001d6  f04ff04f          MOV      r2,#0xe000e000
0001da  b129              CBZ      r1,|L1.488|
;;;451      {
;;;452        SCB->SysCtrl |= LowPowerMode;
0001dc  f8d2f8d2          LDR      r1,[r2,#0xd10]
0001e0  4308              ORRS     r0,r0,r1
0001e2  f8c2f8c2          STR      r0,[r2,#0xd10]
;;;453      }
;;;454      else
;;;455      {
;;;456        SCB->SysCtrl &= (u32)(~(u32)LowPowerMode);
;;;457      }
;;;458    }
0001e6  4770              BX       lr
                  |L1.488|
0001e8  f8d2f8d2          LDR      r1,[r2,#0xd10]
0001ec  ea21ea21          BIC      r0,r1,r0
0001f0  f8c2f8c2          STR      r0,[r2,#0xd10]
0001f4  4770              BX       lr
;;;459    
                          ENDP

                  NVIC_SystemHandlerConfig PROC
;;;481      
;;;482      tmpreg =  (u32)0x01 << (SystemHandler & (u32)0x1F);
0001f6  f000f000          AND      r0,r0,#0x1f
0001fa  2201              MOVS     r2,#1
0001fc  fa02fa02          LSL      r0,r2,r0
;;;483    
;;;484      if (NewState != DISABLE)
000200  f04ff04f          MOV      r2,#0xe000e000
000204  b129              CBZ      r1,|L1.530|
;;;485      {
;;;486        SCB->SysHandlerCtrl |= tmpreg;
000206  f8d2f8d2          LDR      r1,[r2,#0xd24]
00020a  4308              ORRS     r0,r0,r1
00020c  f8c2f8c2          STR      r0,[r2,#0xd24]
;;;487      }
;;;488      else
;;;489      {
;;;490        SCB->SysHandlerCtrl &= ~tmpreg;
;;;491      }
;;;492    }
000210  4770              BX       lr
                  |L1.530|
000212  f8d2f8d2          LDR      r1,[r2,#0xd24]
000216  ea21ea21          BIC      r0,r1,r0
00021a  f8c2f8c2          STR      r0,[r2,#0xd24]
00021e  4770              BX       lr
;;;493    
                          ENDP

                  NVIC_SystemHandlerPriorityConfig PROC
;;;515                                          u8 SystemHandlerSubPriority)
;;;516    {
000220  b430              PUSH     {r4,r5}
;;;517      u32 tmp1 = 0x00, tmp2 = 0xFF, handlermask = 0x00;
000222  24ff              MOVS     r4,#0xff
;;;518      u32 tmppriority = 0x00;
;;;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;
000224  f04ff04f          MOV      r5,#0xe000e000
000228  f8d5f8d5          LDR      r3,[r5,#0xd0c]
00022c  f403f403          AND      r3,r3,#0x700
000230  f5c3f5c3          RSB      r3,r3,#0x700
000234  0a1b              LSRS     r3,r3,#8
;;;526      tmp1 = (0x4 - tmppriority);
000236  f1c3f1c3          RSB      r12,r3,#4
;;;527      tmp2 = tmp2 >> tmppriority;
00023a  fa24fa24          LSR      r3,r4,r3
;;;528        
;;;529      tmppriority = (u32)SystemHandlerPreemptionPriority << tmp1;
00023e  fa01fa01          LSL      r1,r1,r12
;;;530      tmppriority |=  SystemHandlerSubPriority & tmp2;
000242  401a              ANDS     r2,r2,r3
000244  4311              ORRS     r1,r1,r2
;;;531    
;;;532      tmppriority = tmppriority << 0x04;
000246  010a              LSLS     r2,r1,#4
;;;533      tmp1 = SystemHandler & (u32)0xC0;
000248  f000f000          AND      r1,r0,#0xc0
;;;534      tmp1 = tmp1 >> 0x06; 
00024c  0989              LSRS     r1,r1,#6
;;;535      tmp2 = (SystemHandler >> 0x08) & (u32)0x03;
00024e  f3c0f3c0          UBFX     r0,r0,#8,#2
;;;536      tmppriority = tmppriority << (tmp2 * 0x08);
000252  00c0              LSLS     r0,r0,#3
000254  4082              LSLS     r2,r2,r0
;;;537      handlermask = (u32)0xFF << (tmp2 * 0x08);
000256  23ff              MOVS     r3,#0xff
000258  4083              LSLS     r3,r3,r0
;;;538      
;;;539      SCB->SystemPriority[tmp1] &= ~handlermask;
00025a  eb05eb05          ADD      r0,r5,r1,LSL #2
00025e  f8d0f8d0          LDR      r1,[r0,#0xd18]
000262  4399              BICS     r1,r1,r3
000264  f8c0f8c0          STR      r1,[r0,#0xd18]
;;;540      SCB->SystemPriority[tmp1] |= tmppriority;
000268  f8d0f8d0          LDR      r1,[r0,#0xd18]
00026c  4311              ORRS     r1,r1,r2
00026e  f8c0f8c0          STR      r1,[r0,#0xd18]
;;;541    }
000272  bc30              POP      {r4,r5}
000274  4770              BX       lr
;;;542    
                          ENDP

                  NVIC_GetSystemHandlerPendingBitStatus PROC
;;;556    ITStatus NVIC_GetSystemHandlerPendingBitStatus(u32 SystemHandler)
;;;557    {
000276  4601              MOV      r1,r0
;;;558      ITStatus bitstatus  = RESET;
000278  2000              MOVS     r0,#0
;;;559      u32 tmp = 0x00, tmppos = 0x00;
;;;560    
;;;561      /* Check the parameters */
;;;562      assert(IS_GET_PENDING_SYSTEM_HANDLER(SystemHandler));
;;;563      
;;;564      tmppos = (SystemHandler >> 0x0A);
00027a  0a89              LSRS     r1,r1,#10
;;;565      tmppos &= (u32)0x0F;
00027c  f001f001          AND      r1,r1,#0xf
;;;566    
;;;567      tmppos = (u32)0x01 << tmppos;
000280  2201              MOVS     r2,#1
000282  fa02fa02          LSL      r1,r2,r1
;;;568    
;;;569      tmp = SCB->SysHandlerCtrl & tmppos;
000286  4a2f              LDR      r2,|L1.836|
000288  6812              LDR      r2,[r2,#0]
00028a  400a              ANDS     r2,r2,r1
;;;570    
;;;571      if (tmp == tmppos)
00028c  428a              CMP      r2,r1
00028e  d100              BNE      |L1.658|
;;;572      {
;;;573        bitstatus = SET;
000290  2001              MOVS     r0,#1
                  |L1.658|
;;;574      }
;;;575      else
;;;576      {
;;;577        bitstatus = RESET;
;;;578      }
;;;579      return bitstatus;
;;;580    }
000292  4770              BX       lr
;;;581    
                          ENDP

                  NVIC_SetSystemHandlerPendingBit PROC
;;;601      /* Get the System Handler pending bit position */
;;;602      tmp = SystemHandler & (u32)0x1F;
000294  f000f000          AND      r0,r0,#0x1f
;;;603      /* Set the corresponding System Handler pending bit */
;;;604      SCB->IRQControlState |= ((u32)0x01 << tmp);
000298  4924              LDR      r1,|L1.812|
00029a  680a              LDR      r2,[r1,#0]
00029c  2301              MOVS     r3,#1
00029e  fa03fa03          LSL      r0,r3,r0
0002a2  4310              ORRS     r0,r0,r2
0002a4  6008              STR      r0,[r1,#0]
;;;605    }
0002a6  4770              BX       lr
;;;606    
                          ENDP

                  NVIC_ClearSystemHandlerPendingBit PROC
;;;625      /* Get the System Handler pending bit position */
;;;626      tmp = SystemHandler & (u32)0x1F;
0002a8  f000f000          AND      r0,r0,#0x1f
;;;627      /* Clear the corresponding System Handler pending bit */
;;;628      SCB->IRQControlState |= ((u32)0x01 << (tmp - 0x01));
0002ac  491f              LDR      r1,|L1.812|
0002ae  680a              LDR      r2,[r1,#0]
0002b0  1e40              SUBS     r0,r0,#1
0002b2  2301              MOVS     r3,#1
0002b4  fa03fa03          LSL      r0,r3,r0
0002b8  4310              ORRS     r0,r0,r2
0002ba  6008              STR      r0,[r1,#0]
;;;629    }
0002bc  4770              BX       lr
;;;630    
                          ENDP

                  NVIC_GetSystemHandlerActiveBitStatus PROC
;;;648    ITStatus NVIC_GetSystemHandlerActiveBitStatus(u32 SystemHandler)
;;;649    {
0002be  4601              MOV      r1,r0
;;;650      ITStatus bitstatus  = RESET;
0002c0  2000              MOVS     r0,#0
;;;651    
;;;652      u32 tmp = 0x00, tmppos = 0x00;
;;;653    
;;;654      /* Check the parameters */
;;;655      assert(IS_GET_ACTIVE_SYSTEM_HANDLER(SystemHandler));
;;;656      
;;;657      tmppos = (SystemHandler >> 0x0E) & (u32)0x0F;
0002c2  f3c1f3c1          UBFX     r1,r1,#14,#4
;;;658    
;;;659      tmppos = (u32)0x01 << tmppos;
0002c6  2201              MOVS     r2,#1
0002c8  fa02fa02          LSL      r1,r2,r1
;;;660    
;;;661      tmp = SCB->SysHandlerCtrl & tmppos;
0002cc  4a1d              LDR      r2,|L1.836|
0002ce  6812              LDR      r2,[r2,#0]
0002d0  400a              ANDS     r2,r2,r1
;;;662    
;;;663      if (tmp == tmppos)
0002d2  428a              CMP      r2,r1
0002d4  d100              BNE      |L1.728|
;;;664      {
;;;665        bitstatus = SET;
0002d6  2001              MOVS     r0,#1
                  |L1.728|
;;;666      }
;;;667      else
;;;668      {
;;;669        bitstatus = RESET;
;;;670      }
;;;671      return bitstatus;
;;;672    }
0002d8  4770              BX       lr
;;;673    
                          ENDP

                  NVIC_GetFaultHandlerSources PROC
;;;695      
;;;696      tmpreg = (SystemHandler >> 0x12) & (u32)0x03;
0002da  f3c0f3c0          UBFX     r1,r0,#18,#2
;;;697      tmppos = (SystemHandler >> 0x14) & (u32)0x03;
0002de  f3c0f3c0          UBFX     r0,r0,#20,#2
;;;698    
;;;699      if (tmpreg == 0x00)
0002e2  f04ff04f          MOV      r2,#0xe000e000
0002e6  b911              CBNZ     r1,|L1.750|
;;;700      {
;;;701        faultsources = SCB->HardFaultStatus;
0002e8  f8d2f8d2          LDR      r0,[r2,#0xd2c]
;;;702      }
;;;703      else if (tmpreg == 0x01)
;;;704      {
;;;705        faultsources = SCB->ConfigFaultStatus >> (tmppos * 0x08);
;;;706        if (tmppos != 0x02)
;;;707        {
;;;708          faultsources &= (u32)0x0F;
;;;709        }
;;;710        else
;;;711        {
;;;712          faultsources &= (u32)0xFF;
;;;713        }
;;;714      }
;;;715      else
;;;716      {
;;;717        faultsources = SCB->DebugFaultStatus;
;;;718      }
;;;719      return faultsources;
;;;720    }
0002ec  4770              BX       lr
                  |L1.750|
0002ee  2901              CMP      r1,#1
0002f0  d10a              BNE      |L1.776|
0002f2  f8d2f8d2          LDR      r1,[r2,#0xd28]
0002f6  00c2              LSLS     r2,r0,#3
0002f8  40d1              LSRS     r1,r1,r2
0002fa  2802              CMP      r0,#2
0002fc  d002              BEQ      |L1.772|
0002fe  f001f001          AND      r0,r1,#0xf
000302  4770              BX       lr
                  |L1.772|
000304  b2c8              UXTB     r0,r1
000306  4770              BX       lr
                  |L1.776|
000308  f8d2f8d2          LDR      r0,[r2,#0xd30]
00030c  4770              BX       lr
;;;721    
                          ENDP

                  NVIC_GetFaultAddress PROC
;;;741      
;;;742      tmp = (SystemHandler >> 0x16) & (u32)0x01;
00030e  f3c0f3c0          UBFX     r0,r0,#22,#1
;;;743    
;;;744      if (tmp == 0x00)
000312  f04ff04f          MOV      r1,#0xe000e000
000316  b910              CBNZ     r0,|L1.798|
;;;745      {
;;;746        faultaddress = SCB->MemoryManageFaultAddr;
000318  f8d1f8d1          LDR      r0,[r1,#0xd34]
;;;747      }
;;;748      else
;;;749      {
;;;750        faultaddress = SCB->BusFaultAddr;
;;;751      }
;;;752      return faultaddress;
;;;753    }
00031c  4770              BX       lr
                  |L1.798|
00031e  f8d1f8d1          LDR      r0,[r1,#0xd38]
000322  4770              BX       lr
;;;754    
                          ENDP

                  |L1.804|
000324  05fa0000          DCD      0x05fa0000
                  |L1.808|
000328  e000ed0c          DCD      0xe000ed0c
                  |L1.812|
00032c  e000ed04          DCD      0xe000ed04
                  |L1.816|
000330  e000ef00          DCD      0xe000ef00
                  |L1.820|
000334  e000ed00          DCD      0xe000ed00
                  |L1.824|
000338  e000ed08          DCD      0xe000ed08
                  |L1.828|
00033c  05fa0004          DCD      0x05fa0004
                  |L1.832|
000340  05fa0001          DCD      0x05fa0001
                  |L1.836|
000344  e000ed24          DCD      0xe000ed24

⌨️ 快捷键说明

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