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

📄 stm32f10x_nvic.txt

📁 stm32 ucos 精简移殖版本 不需作任何修改直接便可运行。包含串口 定时器
💻 TXT
📖 第 1 页 / 共 2 页
字号:
                          ENDP

                  NVIC_GenerateSystemReset PROC
;;;412    {
;;;413      SCB->AIRCR = AIRCR_VECTKEY_MASK | (u32)0x04;
00017e  4855              LDR      r0,|L1.724|
000180  4953              LDR      r1,|L1.720|
000182  1d00              ADDS     r0,r0,#4
000184  3108              ADDS     r1,r1,#8
000186  6008              STR      r0,[r1,#0]
;;;414    }
000188  4770              BX       lr
;;;415    
                          ENDP

                  NVIC_GenerateCoreReset PROC
;;;424    {
;;;425      SCB->AIRCR = AIRCR_VECTKEY_MASK | (u32)0x01;
00018a  4852              LDR      r0,|L1.724|
00018c  4950              LDR      r1,|L1.720|
00018e  1c40              ADDS     r0,r0,#1
000190  3108              ADDS     r1,r1,#8
000192  6008              STR      r0,[r1,#0]
;;;426    }
000194  4770              BX       lr
;;;427    
                          ENDP

                  NVIC_SystemLPConfig PROC
;;;447      
;;;448      if (NewState != DISABLE)
000196  f04ff04f          MOV      r2,#0xe000e000
00019a  b129              CBZ      r1,|L1.424|
;;;449      {
;;;450        SCB->SCR |= LowPowerMode;
00019c  f8d2f8d2          LDR      r1,[r2,#0xd10]
0001a0  4301              ORRS     r1,r1,r0
0001a2  f8c2f8c2          STR      r1,[r2,#0xd10]
;;;451      }
;;;452      else
;;;453      {
;;;454        SCB->SCR &= (u32)(~(u32)LowPowerMode);
;;;455      }
;;;456    }
0001a6  4770              BX       lr
                  |L1.424|
0001a8  f8d2f8d2          LDR      r1,[r2,#0xd10]        ;454
0001ac  4381              BICS     r1,r1,r0              ;454
0001ae  f8c2f8c2          STR      r1,[r2,#0xd10]        ;454
0001b2  4770              BX       lr
;;;457    
                          ENDP

                  NVIC_SystemHandlerConfig PROC
;;;479      
;;;480      tmpreg =  (u32)0x01 << (SystemHandler & (u32)0x1F);
0001b4  f000f000          AND      r2,r0,#0x1f
0001b8  2001              MOVS     r0,#1
0001ba  4090              LSLS     r0,r0,r2
;;;481    
;;;482      if (NewState != DISABLE)
0001bc  f04ff04f          MOV      r2,#0xe000e000
0001c0  b129              CBZ      r1,|L1.462|
;;;483      {
;;;484        SCB->SHCSR |= tmpreg;
0001c2  f8d2f8d2          LDR      r1,[r2,#0xd24]
0001c6  4301              ORRS     r1,r1,r0
0001c8  f8c2f8c2          STR      r1,[r2,#0xd24]
;;;485      }
;;;486      else
;;;487      {
;;;488        SCB->SHCSR &= ~tmpreg;
;;;489      }
;;;490    }
0001cc  4770              BX       lr
                  |L1.462|
0001ce  f8d2f8d2          LDR      r1,[r2,#0xd24]        ;488
0001d2  4381              BICS     r1,r1,r0              ;488
0001d4  f8c2f8c2          STR      r1,[r2,#0xd24]        ;488
0001d8  4770              BX       lr
;;;491    
                          ENDP

                  NVIC_SystemHandlerPriorityConfig PROC
;;;513                                          u8 SystemHandlerSubPriority)
;;;514    {
0001da  b570              PUSH     {r4-r6,lr}
;;;515      u32 tmp1 = 0x00, tmp2 = 0xFF, handlermask = 0x00;
0001dc  24ff              MOVS     r4,#0xff
;;;516      u32 tmppriority = 0x00;
;;;517    
;;;518      /* Check the parameters */
;;;519      assert_param(IS_PRIORITY_SYSTEM_HANDLER(SystemHandler));
;;;520      assert_param(IS_NVIC_PREEMPTION_PRIORITY(SystemHandlerPreemptionPriority));  
;;;521      assert_param(IS_NVIC_SUB_PRIORITY(SystemHandlerSubPriority));
;;;522        
;;;523      tmppriority = (0x700 - (SCB->AIRCR & (u32)0x700))>> 0x08;
0001de  f04ff04f          MOV      r6,#0xe000e000
0001e2  f8d6f8d6          LDR      r3,[r6,#0xd0c]
0001e6  f403f403          AND      r3,r3,#0x700
0001ea  f5c3f5c3          RSB      r3,r3,#0x700
0001ee  0a1b              LSRS     r3,r3,#8
;;;524      tmp1 = (0x4 - tmppriority);
0001f0  f1c3f1c3          RSB      r5,r3,#4
;;;525      tmp2 = tmp2 >> tmppriority;
0001f4  40dc              LSRS     r4,r4,r3
;;;526        
;;;527      tmppriority = (u32)SystemHandlerPreemptionPriority << tmp1;
0001f6  40a9              LSLS     r1,r1,r5
;;;528      tmppriority |=  SystemHandlerSubPriority & tmp2;
0001f8  4022              ANDS     r2,r2,r4
0001fa  430a              ORRS     r2,r2,r1
;;;529    
;;;530      tmppriority = tmppriority << 0x04;
0001fc  0111              LSLS     r1,r2,#4
;;;531      tmp1 = SystemHandler & (u32)0xC0;
0001fe  f000f000          AND      r2,r0,#0xc0
;;;532      tmp1 = tmp1 >> 0x06; 
000202  0992              LSRS     r2,r2,#6
;;;533      tmp2 = (SystemHandler >> 0x08) & (u32)0x03;
000204  f3c0f3c0          UBFX     r0,r0,#8,#2
;;;534      tmppriority = tmppriority << (tmp2 * 0x08);
000208  00c0              LSLS     r0,r0,#3
00020a  4081              LSLS     r1,r1,r0
;;;535      handlermask = (u32)0xFF << (tmp2 * 0x08);
00020c  23ff              MOVS     r3,#0xff
00020e  4083              LSLS     r3,r3,r0
;;;536      
;;;537      SCB->SHPR[tmp1] &= ~handlermask;
000210  eb06eb06          ADD      r0,r6,r2,LSL #2
000214  f600f600          ADD      r0,r0,#0xd18
000218  6802              LDR      r2,[r0,#0]
00021a  439a              BICS     r2,r2,r3
00021c  6002              STR      r2,[r0,#0]
;;;538      SCB->SHPR[tmp1] |= tmppriority;
00021e  6802              LDR      r2,[r0,#0]
000220  430a              ORRS     r2,r2,r1
000222  6002              STR      r2,[r0,#0]
;;;539    }
000224  bd70              POP      {r4-r6,pc}
;;;540    
                          ENDP

                  NVIC_GetSystemHandlerPendingBitStatus PROC
;;;554    ITStatus NVIC_GetSystemHandlerPendingBitStatus(u32 SystemHandler)
;;;555    {
000226  4601              MOV      r1,r0
;;;556      ITStatus bitstatus  = RESET;
000228  2000              MOVS     r0,#0
;;;557      u32 tmp = 0x00, tmppos = 0x00;
;;;558    
;;;559      /* Check the parameters */
;;;560      assert_param(IS_GET_PENDING_SYSTEM_HANDLER(SystemHandler));
;;;561      
;;;562      tmppos = (SystemHandler >> 0x0A);
00022a  0a89              LSRS     r1,r1,#10
;;;563      tmppos &= (u32)0x0F;
00022c  f001f001          AND      r2,r1,#0xf
;;;564    
;;;565      tmppos = (u32)0x01 << tmppos;
000230  2101              MOVS     r1,#1
000232  4091              LSLS     r1,r1,r2
;;;566    
;;;567      tmp = SCB->SHCSR & tmppos;
000234  4a26              LDR      r2,|L1.720|
000236  3220              ADDS     r2,r2,#0x20
000238  6812              LDR      r2,[r2,#0]
00023a  400a              ANDS     r2,r2,r1
;;;568    
;;;569      if (tmp == tmppos)
00023c  428a              CMP      r2,r1
00023e  d100              BNE      |L1.578|
;;;570      {
;;;571        bitstatus = SET;
000240  2001              MOVS     r0,#1
                  |L1.578|
;;;572      }
;;;573      else
;;;574      {
;;;575        bitstatus = RESET;
;;;576      }
;;;577      return bitstatus;
;;;578    }
000242  4770              BX       lr
;;;579    
                          ENDP

                  NVIC_SetSystemHandlerPendingBit PROC
;;;599      /* Get the System Handler pending bit position */
;;;600      tmp = SystemHandler & (u32)0x1F;
000244  f000f000          AND      r0,r0,#0x1f
;;;601      /* Set the corresponding System Handler pending bit */
;;;602      SCB->ICSR |= ((u32)0x01 << tmp);
000248  4921              LDR      r1,|L1.720|
00024a  680b              LDR      r3,[r1,#0]
00024c  2201              MOVS     r2,#1
00024e  4082              LSLS     r2,r2,r0
000250  4313              ORRS     r3,r3,r2
000252  600b              STR      r3,[r1,#0]
;;;603    }
000254  4770              BX       lr
;;;604    
                          ENDP

                  NVIC_ClearSystemHandlerPendingBit PROC
;;;623      /* Get the System Handler pending bit position */
;;;624      tmp = SystemHandler & (u32)0x1F;
000256  f000f000          AND      r0,r0,#0x1f
;;;625      /* Clear the corresponding System Handler pending bit */
;;;626      SCB->ICSR |= ((u32)0x01 << (tmp - 0x01));
00025a  4b1d              LDR      r3,|L1.720|
00025c  6819              LDR      r1,[r3,#0]
00025e  1e40              SUBS     r0,r0,#1
000260  2201              MOVS     r2,#1
000262  4082              LSLS     r2,r2,r0
000264  4311              ORRS     r1,r1,r2
000266  6019              STR      r1,[r3,#0]
;;;627    }
000268  4770              BX       lr
;;;628    
                          ENDP

                  NVIC_GetSystemHandlerActiveBitStatus PROC
;;;646    ITStatus NVIC_GetSystemHandlerActiveBitStatus(u32 SystemHandler)
;;;647    {
00026a  4601              MOV      r1,r0
;;;648      ITStatus bitstatus  = RESET;
00026c  2000              MOVS     r0,#0
;;;649    
;;;650      u32 tmp = 0x00, tmppos = 0x00;
;;;651    
;;;652      /* Check the parameters */
;;;653      assert_param(IS_GET_ACTIVE_SYSTEM_HANDLER(SystemHandler));
;;;654      
;;;655      tmppos = (SystemHandler >> 0x0E) & (u32)0x0F;
00026e  f3c1f3c1          UBFX     r2,r1,#14,#4
;;;656    
;;;657      tmppos = (u32)0x01 << tmppos;
000272  2101              MOVS     r1,#1
000274  4091              LSLS     r1,r1,r2
;;;658    
;;;659      tmp = SCB->SHCSR & tmppos;
000276  4a16              LDR      r2,|L1.720|
000278  3220              ADDS     r2,r2,#0x20
00027a  6812              LDR      r2,[r2,#0]
00027c  400a              ANDS     r2,r2,r1
;;;660    
;;;661      if (tmp == tmppos)
00027e  428a              CMP      r2,r1
000280  d100              BNE      |L1.644|
;;;662      {
;;;663        bitstatus = SET;
000282  2001              MOVS     r0,#1
                  |L1.644|
;;;664      }
;;;665      else
;;;666      {
;;;667        bitstatus = RESET;
;;;668      }
;;;669      return bitstatus;
;;;670    }
000284  4770              BX       lr
;;;671    
                          ENDP

                  NVIC_GetFaultHandlerSources PROC
;;;693      
;;;694      tmpreg = (SystemHandler >> 0x12) & (u32)0x03;
000286  f3c0f3c0          UBFX     r1,r0,#18,#2
;;;695      tmppos = (SystemHandler >> 0x14) & (u32)0x03;
00028a  f3c0f3c0          UBFX     r0,r0,#20,#2
;;;696    
;;;697      if (tmpreg == 0x00)
00028e  f04ff04f          MOV      r2,#0xe000e000
000292  b911              CBNZ     r1,|L1.666|
;;;698      {
;;;699        faultsources = SCB->HFSR;
000294  f8d2f8d2          LDR      r0,[r2,#0xd2c]
;;;700      }
;;;701      else if (tmpreg == 0x01)
;;;702      {
;;;703        faultsources = SCB->CFSR >> (tmppos * 0x08);
;;;704        if (tmppos != 0x02)
;;;705        {
;;;706          faultsources &= (u32)0x0F;
;;;707        }
;;;708        else
;;;709        {
;;;710          faultsources &= (u32)0xFF;
;;;711        }
;;;712      }
;;;713      else
;;;714      {
;;;715        faultsources = SCB->DFSR;
;;;716      }
;;;717      return faultsources;
;;;718    }
000298  4770              BX       lr
                  |L1.666|
00029a  2901              CMP      r1,#1                 ;701
00029c  d10a              BNE      |L1.692|
00029e  f8d2f8d2          LDR      r1,[r2,#0xd28]        ;703
0002a2  00c2              LSLS     r2,r0,#3              ;703
0002a4  40d1              LSRS     r1,r1,r2              ;703
0002a6  2802              CMP      r0,#2                 ;704
0002a8  d002              BEQ      |L1.688|
0002aa  f001f001          AND      r0,r1,#0xf            ;706
0002ae  4770              BX       lr
                  |L1.688|
0002b0  b2c8              UXTB     r0,r1                 ;710
0002b2  4770              BX       lr
                  |L1.692|
0002b4  f8d2f8d2          LDR      r0,[r2,#0xd30]        ;715
0002b8  4770              BX       lr
;;;719    
                          ENDP

                  NVIC_GetFaultAddress PROC
;;;739      
;;;740      tmp = (SystemHandler >> 0x16) & (u32)0x01;
0002ba  f3c0f3c0          UBFX     r0,r0,#22,#1
;;;741    
;;;742      if (tmp == 0x00)
0002be  f04ff04f          MOV      r1,#0xe000e000
0002c2  b910              CBNZ     r0,|L1.714|
;;;743      {
;;;744        faultaddress = SCB->MMFAR;
0002c4  f8d1f8d1          LDR      r0,[r1,#0xd34]
;;;745      }
;;;746      else
;;;747      {
;;;748        faultaddress = SCB->BFAR;
;;;749      }
;;;750      return faultaddress;
;;;751    }
0002c8  4770              BX       lr
                  |L1.714|
0002ca  f8d1f8d1          LDR      r0,[r1,#0xd38]        ;748
0002ce  4770              BX       lr
;;;752    
                          ENDP

                  |L1.720|
0002d0  e000ed04          DCD      0xe000ed04
                  |L1.724|
0002d4  05fa0000          DCD      0x05fa0000
                  |L1.728|
0002d8  e000ef00          DCD      0xe000ef00
                  |L1.732|
0002dc  1fffff80          DCD      0x1fffff80

⌨️ 快捷键说明

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