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

📄 stm32f10x_nvic.txt

📁 STM32 ARM 处理器的ADC采样源代码
💻 TXT
📖 第 1 页 / 共 3 页
字号:
; generated by ARM/Thumb C/C++ Compiler with , RVCT3.1 [Build 902] for uVision
; commandline ArmCC [--debug -c --asm --interleave -o..\Obj\stm32f10x_nvic.o --depend=..\Obj\stm32f10x_nvic.d --device=DARMSTM -I..\..\..\..\..\INC\ST\STM32F10x -IC:\Keil\ARM\INC\ST\STM32F10x -DVECT_TAB_FLASH --omf_browse=..\Obj\stm32f10x_nvic.crf ..\..\library\src\stm32f10x_nvic.c]
                          THUMB

                          AREA ||.text||, CODE, READONLY, ALIGN=2

                  NVIC_DeInit PROC
;;;42     {
;;;43       u32 index = 0;
000000  2000              MOVS     r0,#0
;;;44       
;;;45       NVIC->Disable[0] = 0xFFFFFFFF;
000002  1e41              SUBS     r1,r0,#1
000004  4af2              LDR      r2,|L1.976|
000006  6011              STR      r1,[r2,#0]
;;;46       NVIC->Disable[1] = 0x000007FF;
000008  0d4a              LSRS     r2,r1,#21
00000a  49f1              LDR      r1,|L1.976|
00000c  3980              SUBS     r1,r1,#0x80
00000e  f8c1f8c1          STR      r2,[r1,#0x84]
;;;47       NVIC->Clear[0] = 0xFFFFFFFF;
000012  1e41              SUBS     r1,r0,#1
000014  f04ff04f          MOV      r2,#0xe000e000
000018  f8c2f8c2          STR      r1,[r2,#0x280]
;;;48       NVIC->Clear[1] = 0x000007FF;
00001c  0d4a              LSRS     r2,r1,#21
00001e  49ed              LDR      r1,|L1.980|
000020  600a              STR      r2,[r1,#0]
;;;49       
;;;50       for(index = 0; index < 0x0B; index++)
000022  bf00              NOP      
000024  e004              B        |L1.48|
                  |L1.38|
;;;51       {
;;;52          NVIC->Priority[index] = 0x00000000;
000026  2200              MOVS     r2,#0
000028  49eb              LDR      r1,|L1.984|
00002a  f841f841          STR      r2,[r1,r0,LSL #2]
00002e  1c40              ADDS     r0,r0,#1
                  |L1.48|
000030  280b              CMP      r0,#0xb
000032  d3f8              BCC      |L1.38|
;;;53       } 
;;;54     }
000034  4770              BX       lr
                          ENDP

                  NVIC_SCBDeInit PROC
;;;65     {
;;;66       u32 index = 0x00;
000036  2000              MOVS     r0,#0
;;;67       
;;;68       SCB->IRQControlState = 0x0A000000;
000038  f04ff04f          MOV      r1,#0xa000000
00003c  4ae7              LDR      r2,|L1.988|
00003e  6011              STR      r1,[r2,#0]
;;;69       SCB->ExceptionTableOffset = 0x00000000;
000040  2100              MOVS     r1,#0
000042  f04ff04f          MOV      r2,#0xe000e000
000046  f8c2f8c2          STR      r1,[r2,#0xd08]
;;;70       SCB->AIRC = AIRC_VECTKEY_MASK;
00004a  49e5              LDR      r1,|L1.992|
00004c  4ae3              LDR      r2,|L1.988|
00004e  3208              ADDS     r2,r2,#8
000050  6011              STR      r1,[r2,#0]
;;;71       SCB->SysCtrl = 0x00000000;
000052  2100              MOVS     r1,#0
000054  1d12              ADDS     r2,r2,#4
000056  6011              STR      r1,[r2,#0]
;;;72       SCB->ConfigCtrl = 0x00000000;
000058  1d12              ADDS     r2,r2,#4
00005a  6011              STR      r1,[r2,#0]
;;;73       for(index = 0; index < 0x03; index++)
00005c  bf00              NOP      
00005e  e005              B        |L1.108|
                  |L1.96|
;;;74       {
;;;75          SCB->SystemPriority[index] = 0;
000060  2200              MOVS     r2,#0
000062  49de              LDR      r1,|L1.988|
000064  3114              ADDS     r1,r1,#0x14
000066  f841f841          STR      r2,[r1,r0,LSL #2]
00006a  1c40              ADDS     r0,r0,#1
                  |L1.108|
00006c  2803              CMP      r0,#3
00006e  d3f7              BCC      |L1.96|
;;;76       }
;;;77       SCB->SysHandlerCtrl = 0x00000000;
000070  2100              MOVS     r1,#0
000072  4ada              LDR      r2,|L1.988|
000074  3220              ADDS     r2,r2,#0x20
000076  6011              STR      r1,[r2,#0]
;;;78       SCB->ConfigFaultStatus = 0xFFFFFFFF;
000078  1e49              SUBS     r1,r1,#1
00007a  f04ff04f          MOV      r2,#0xe000e000
00007e  f8c2f8c2          STR      r1,[r2,#0xd28]
;;;79       SCB->HardFaultStatus = 0xFFFFFFFF;
000082  4ad6              LDR      r2,|L1.988|
000084  3228              ADDS     r2,r2,#0x28
000086  6011              STR      r1,[r2,#0]
;;;80       SCB->DebugFaultStatus = 0xFFFFFFFF;
000088  f04ff04f          MOV      r2,#0xe000e000
00008c  f8c2f8c2          STR      r1,[r2,#0xd30]
;;;81     }
000090  4770              BX       lr
                          ENDP

                  NVIC_PriorityGroupConfig PROC
;;;107      /* Set the PRIGROUP[10:8] bits according to NVIC_PriorityGroup value */
;;;108      SCB->AIRC = AIRC_VECTKEY_MASK | NVIC_PriorityGroup;
000092  49d3              LDR      r1,|L1.992|
000094  4301              ORRS     r1,r1,r0
000096  4ad1              LDR      r2,|L1.988|
000098  3208              ADDS     r2,r2,#8
00009a  6011              STR      r1,[r2,#0]
;;;109    }
00009c  4770              BX       lr
                          ENDP

                  NVIC_Init PROC
;;;121    void NVIC_Init(NVIC_InitTypeDef* NVIC_InitStruct)
;;;122    {
00009e  b5f0              PUSH     {r4-r7,lr}
;;;123      u32 tmppriority = 0x00, tmpreg = 0x00, tmpmask = 0x00;
0000a0  2100              MOVS     r1,#0
0000a2  2200              MOVS     r2,#0
0000a4  2300              MOVS     r3,#0
;;;124      u32 tmppre = 0, tmpsub = 0x0F;
0000a6  2400              MOVS     r4,#0
0000a8  250f              MOVS     r5,#0xf
;;;125    
;;;126      /* Check the parameters */
;;;127      assert(IS_FUNCTIONAL_STATE(NVIC_InitStruct->NVIC_IRQChannelCmd));
;;;128      assert(IS_NVIC_IRQ_CHANNEL(NVIC_InitStruct->NVIC_IRQChannel));
;;;129      assert(IS_NVIC_PREEMPTION_PRIORITY(NVIC_InitStruct->NVIC_IRQChannelPreemptionPriority));  
;;;130      assert(IS_NVIC_SUB_PRIORITY(NVIC_InitStruct->NVIC_IRQChannelSubPriority));
;;;131        
;;;132      if (NVIC_InitStruct->NVIC_IRQChannelCmd != DISABLE)
0000aa  78c6              LDRB     r6,[r0,#3]
0000ac  2e00              CMP      r6,#0
0000ae  d036              BEQ      |L1.286|
;;;133      {
;;;134        /* Compute the Corresponding IRQ Priority --------------------------------*/    
;;;135        tmppriority = (0x700 - (SCB->AIRC & (u32)0x700))>> 0x08;
0000b0  4eca              LDR      r6,|L1.988|
0000b2  3608              ADDS     r6,r6,#8
0000b4  6836              LDR      r6,[r6,#0]
0000b6  f406f406          AND      r6,r6,#0x700
0000ba  f5c6f5c6          RSB      r6,r6,#0x700
0000be  0a31              LSRS     r1,r6,#8
;;;136        tmppre = (0x4 - tmppriority);
0000c0  f1c1f1c1          RSB      r4,r1,#4
;;;137        tmpsub = tmpsub >> tmppriority;
0000c4  40cd              LSRS     r5,r5,r1
;;;138        
;;;139        tmppriority = (u32)NVIC_InitStruct->NVIC_IRQChannelPreemptionPriority << tmppre;
0000c6  7846              LDRB     r6,[r0,#1]
0000c8  fa06fa06          LSL      r1,r6,r4
;;;140        tmppriority |=  NVIC_InitStruct->NVIC_IRQChannelSubPriority & tmpsub;
0000cc  7886              LDRB     r6,[r0,#2]
0000ce  402e              ANDS     r6,r6,r5
0000d0  4331              ORRS     r1,r1,r6
;;;141    
;;;142        tmppriority = tmppriority << 0x04;
0000d2  0109              LSLS     r1,r1,#4
;;;143        tmppriority = ((u32)tmppriority) << ((NVIC_InitStruct->NVIC_IRQChannel & (u8)0x03) * 0x08);
0000d4  7806              LDRB     r6,[r0,#0]
0000d6  07b6              LSLS     r6,r6,#30
0000d8  0ef6              LSRS     r6,r6,#27
0000da  40b1              LSLS     r1,r1,r6
;;;144        
;;;145        tmpreg = NVIC->Priority[(NVIC_InitStruct->NVIC_IRQChannel >> 0x02)];
0000dc  4ebe              LDR      r6,|L1.984|
0000de  7807              LDRB     r7,[r0,#0]
0000e0  10bf              ASRS     r7,r7,#2
0000e2  f856f856          LDR      r2,[r6,r7,LSL #2]
;;;146        tmpmask = (u32)0xFF << ((NVIC_InitStruct->NVIC_IRQChannel & (u8)0x03) * 0x08);
0000e6  7806              LDRB     r6,[r0,#0]
0000e8  07b6              LSLS     r6,r6,#30
0000ea  0ef7              LSRS     r7,r6,#27
0000ec  26ff              MOVS     r6,#0xff
0000ee  fa06fa06          LSL      r3,r6,r7
;;;147        tmpreg &= ~tmpmask;
0000f2  439a              BICS     r2,r2,r3
;;;148        tmppriority &= tmpmask;  
0000f4  4019              ANDS     r1,r1,r3
;;;149        tmpreg |= tmppriority;
0000f6  430a              ORRS     r2,r2,r1
;;;150    
;;;151        NVIC->Priority[(NVIC_InitStruct->NVIC_IRQChannel >> 0x02)] = tmpreg;
0000f8  4eb7              LDR      r6,|L1.984|
0000fa  7807              LDRB     r7,[r0,#0]
0000fc  10bf              ASRS     r7,r7,#2
0000fe  f846f846          STR      r2,[r6,r7,LSL #2]
;;;152        
;;;153        /* Enable the Selected IRQ Channels --------------------------------------*/
;;;154        NVIC->Enable[(NVIC_InitStruct->NVIC_IRQChannel >> 0x05)] =
000102  7806              LDRB     r6,[r0,#0]
000104  f006f006          AND      r7,r6,#0x1f
000108  2601              MOVS     r6,#1
00010a  40be              LSLS     r6,r6,r7
00010c  7807              LDRB     r7,[r0,#0]
00010e  117f              ASRS     r7,r7,#5
000110  f04ff04f          MOV      r12,#0xe000e000
000114  eb0ceb0c          ADD      r7,r12,r7,LSL #2
000118  f8c7f8c7          STR      r6,[r7,#0x100]
00011c  e00b              B        |L1.310|
                  |L1.286|
;;;155          (u32)0x01 << (NVIC_InitStruct->NVIC_IRQChannel & (u8)0x1F);
;;;156      }
;;;157      else
;;;158      {
;;;159        /* Disable the Selected IRQ Channels -------------------------------------*/
;;;160        NVIC->Disable[(NVIC_InitStruct->NVIC_IRQChannel >> 0x05)] =
00011e  7806              LDRB     r6,[r0,#0]
000120  f006f006          AND      r6,r6,#0x1f
000124  2701              MOVS     r7,#1
000126  40b7              LSLS     r7,r7,r6
000128  4ea9              LDR      r6,|L1.976|
00012a  f890f890          LDRB     r12,[r0,#0]
00012e  ea4fea4f          ASR      r12,r12,#5
000132  f846f846          STR      r7,[r6,r12,LSL #2]
                  |L1.310|
;;;161          (u32)0x01 << (NVIC_InitStruct->NVIC_IRQChannel & (u8)0x1F);
;;;162      }
;;;163    }
000136  bdf0              POP      {r4-r7,pc}
                          ENDP

                  NVIC_StructInit PROC
;;;175      /* NVIC_InitStruct members default value */
;;;176      NVIC_InitStruct->NVIC_IRQChannel = 0x00;
000138  2100              MOVS     r1,#0
00013a  7001              STRB     r1,[r0,#0]
;;;177      NVIC_InitStruct->NVIC_IRQChannelPreemptionPriority = 0x00;
00013c  7041              STRB     r1,[r0,#1]
;;;178      NVIC_InitStruct->NVIC_IRQChannelSubPriority = 0x00;
00013e  7081              STRB     r1,[r0,#2]
;;;179      NVIC_InitStruct->NVIC_IRQChannelCmd = DISABLE;
000140  70c1              STRB     r1,[r0,#3]
;;;180    }
000142  4770              BX       lr
                          ENDP

                  NVIC_SETPRIMASK PROC
;;;189    void NVIC_SETPRIMASK(void)
;;;190    {
000144  b510              PUSH     {r4,lr}
;;;191      __SETPRIMASK();
000146  f7fff7ff          BL       __SETPRIMASK
;;;192    }
00014a  bd10              POP      {r4,pc}
                          ENDP

                  NVIC_RESETPRIMASK PROC
;;;201    void NVIC_RESETPRIMASK(void)
;;;202    {
00014c  b510              PUSH     {r4,lr}
;;;203      __RESETPRIMASK();
00014e  f7fff7ff          BL       __RESETPRIMASK
;;;204    }
000152  bd10              POP      {r4,pc}
                          ENDP

                  NVIC_SETFAULTMASK PROC
;;;213    void NVIC_SETFAULTMASK(void)
;;;214    {
000154  b510              PUSH     {r4,lr}
;;;215      __SETFAULTMASK();
000156  f7fff7ff          BL       __SETFAULTMASK
;;;216    }
00015a  bd10              POP      {r4,pc}
                          ENDP

                  NVIC_RESETFAULTMASK PROC
;;;225    void NVIC_RESETFAULTMASK(void)
;;;226    {
00015c  b510              PUSH     {r4,lr}
;;;227      __RESETFAULTMASK();
00015e  f7fff7ff          BL       __RESETFAULTMASK
;;;228    }
000162  bd10              POP      {r4,pc}
                          ENDP

                  NVIC_BASEPRICONFIG PROC
;;;238    void NVIC_BASEPRICONFIG(u32 NewPriority)
;;;239    {
000164  b510              PUSH     {r4,lr}
000166  4604              MOV      r4,r0
;;;240      /* Check the parameters */
;;;241      assert(IS_NVIC_BASE_PRI(NewPriority));
;;;242      
;;;243      __BASEPRICONFIG(NewPriority << 0x04);
000168  0120              LSLS     r0,r4,#4
00016a  f7fff7ff          BL       __BASEPRICONFIG
;;;244    }
00016e  bd10              POP      {r4,pc}
                          ENDP

⌨️ 快捷键说明

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