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

📄 common.lst

📁 Cortex-M4+example
💻 LST
📖 第 1 页 / 共 2 页
字号:
   \   0000008C   0x6008             STR      R0,[R1, #+0]
     81                        break;
     82              }              
     83          }
   \                     ??enable_irq_4:
   \   0000008E   0x4770             BX       LR               ;; return
     84          
     85          //-------------------------------------------------------------------------*
     86          //函数名: disable_irq                                                      *
     87          //功  能: 禁止irq中断                                                      * 
     88          //参  数: irq:irq号       						   *	
     89          //返  回: 无                                                               *
     90          //说  明: irq号不是中断向量号                                              *
     91          //-------------------------------------------------------------------------*

   \                                 In section .text, align 2, keep-with-next
     92          void disable_irq (int irq)
     93          {
     94              int div;
     95              
     96              //确定irq号为有效的irq号
     97              if (irq > 91)	irq=91;
   \                     disable_irq:
   \   00000000   0x285C             CMP      R0,#+92
   \   00000002   0xDB00             BLT.N    ??disable_irq_0
   \   00000004   0x205B             MOVS     R0,#+91
     98              
     99              //确定对应的NVICISER
    100              div = irq/32;
   \                     ??disable_irq_0:
   \   00000006   0x2120             MOVS     R1,#+32
   \   00000008   0xFB90 0xF1F1      SDIV     R1,R0,R1
    101              
    102              switch (div)
   \   0000000C   0x2900             CMP      R1,#+0
   \   0000000E   0xD003             BEQ.N    ??disable_irq_1
   \   00000010   0x2902             CMP      R1,#+2
   \   00000012   0xD017             BEQ.N    ??disable_irq_2
   \   00000014   0xD30B             BCC.N    ??disable_irq_3
   \   00000016   0xE01F             B.N      ??disable_irq_4
    103              {
    104              	case 0x0:
    105                         NVICICER0 = 1 << (irq%32);
   \                     ??disable_irq_1:
   \   00000018   0x2101             MOVS     R1,#+1
   \   0000001A   0x2220             MOVS     R2,#+32
   \   0000001C   0xFB90 0xF3F2      SDIV     R3,R0,R2
   \   00000020   0xFB03 0x0312      MLS      R3,R3,R2,R0
   \   00000024   0xFA11 0xF003      LSLS     R0,R1,R3
   \   00000028   0x....             LDR.N    R1,??DataTable4_8  ;; 0xe000e180
   \   0000002A   0x6008             STR      R0,[R1, #+0]
    106                        break;
   \   0000002C   0xE014             B.N      ??disable_irq_4
    107              	case 0x1:
    108                        NVICICER1 = 1 << (irq%32);
   \                     ??disable_irq_3:
   \   0000002E   0x2101             MOVS     R1,#+1
   \   00000030   0x2220             MOVS     R2,#+32
   \   00000032   0xFB90 0xF3F2      SDIV     R3,R0,R2
   \   00000036   0xFB03 0x0312      MLS      R3,R3,R2,R0
   \   0000003A   0xFA11 0xF003      LSLS     R0,R1,R3
   \   0000003E   0x....             LDR.N    R1,??DataTable4_9  ;; 0xe000e184
   \   00000040   0x6008             STR      R0,[R1, #+0]
    109                        break;
   \   00000042   0xE009             B.N      ??disable_irq_4
    110              	case 0x2:
    111                        NVICICER2 = 1 << (irq%32);
   \                     ??disable_irq_2:
   \   00000044   0x2101             MOVS     R1,#+1
   \   00000046   0x2220             MOVS     R2,#+32
   \   00000048   0xFB90 0xF3F2      SDIV     R3,R0,R2
   \   0000004C   0xFB03 0x0312      MLS      R3,R3,R2,R0
   \   00000050   0xFA11 0xF003      LSLS     R0,R1,R3
   \   00000054   0x....             LDR.N    R1,??DataTable4_10  ;; 0xe000e188
   \   00000056   0x6008             STR      R0,[R1, #+0]
    112                        break;
    113              }              
    114          }
   \                     ??disable_irq_4:
   \   00000058   0x4770             BX       LR               ;; return
    115           
    116          //-------------------------------------------------------------------------*
    117          //函数名: set_irq_priority                                                 *
    118          //功  能: 设置irq中断和优先级                                              * 
    119          //参  数: irq:irq号         						   *	
    120          //        prio:优先级						           *	
    121          //返  回: 无                                                               *
    122          //说  明: irq号不是中断向量号                                              *
    123          //-------------------------------------------------------------------------*

   \                                 In section .text, align 2, keep-with-next
    124          void set_irq_priority (int irq, int prio)
    125          {
    126              uint8 *prio_reg;
    127          
    128              //确定irq号和优先级有效
    129              if (irq > 91)	irq=91;
   \                     set_irq_priority:
   \   00000000   0x285C             CMP      R0,#+92
   \   00000002   0xDB00             BLT.N    ??set_irq_priority_0
   \   00000004   0x205B             MOVS     R0,#+91
    130              if (prio > 15)	prio=15;
   \                     ??set_irq_priority_0:
   \   00000006   0x2910             CMP      R1,#+16
   \   00000008   0xDB00             BLT.N    ??set_irq_priority_1
   \   0000000A   0x210F             MOVS     R1,#+15
    131          
    132              //确定对应的NVICISER
    133              prio_reg = (uint8 *)(((uint32)&NVICIP0) + irq);
   \                     ??set_irq_priority_1:
   \   0000000C   0xF100 0x4060      ADD      R0,R0,#-536870912
   \   00000010   0xF510 0x4064      ADDS     R0,R0,#+58368
    134              //设置优先级
    135              *prio_reg = ( (prio&0xF) << (8 - ARM_INTERRUPT_LEVEL_BITS) );             
   \   00000014   0x0109             LSLS     R1,R1,#+4
   \   00000016   0x7001             STRB     R1,[R0, #+0]
    136          }
   \   00000018   0x4770             BX       LR               ;; return

   \                                 In section .text, align 4, keep-with-next
   \                     ??DataTable4:
   \   00000000   0xE000ED10         DC32     0xe000ed10

   \                                 In section .text, align 4, keep-with-next
   \                     ??DataTable4_1:
   \   00000000   0xE000ED08         DC32     0xe000ed08

   \                                 In section .text, align 4, keep-with-next
   \                     ??DataTable4_2:
   \   00000000   0xE000E280         DC32     0xe000e280

   \                                 In section .text, align 4, keep-with-next
   \                     ??DataTable4_3:
   \   00000000   0xE000E100         DC32     0xe000e100

   \                                 In section .text, align 4, keep-with-next
   \                     ??DataTable4_4:
   \   00000000   0xE000E284         DC32     0xe000e284

   \                                 In section .text, align 4, keep-with-next
   \                     ??DataTable4_5:
   \   00000000   0xE000E104         DC32     0xe000e104

   \                                 In section .text, align 4, keep-with-next
   \                     ??DataTable4_6:
   \   00000000   0xE000E288         DC32     0xe000e288

   \                                 In section .text, align 4, keep-with-next
   \                     ??DataTable4_7:
   \   00000000   0xE000E108         DC32     0xe000e108

   \                                 In section .text, align 4, keep-with-next
   \                     ??DataTable4_8:
   \   00000000   0xE000E180         DC32     0xe000e180

   \                                 In section .text, align 4, keep-with-next
   \                     ??DataTable4_9:
   \   00000000   0xE000E184         DC32     0xe000e184

   \                                 In section .text, align 4, keep-with-next
   \                     ??DataTable4_10:
   \   00000000   0xE000E188         DC32     0xe000e188
    137          

   Maximum stack usage in bytes:

   .cstack Function
   ------- --------
        0  disable_irq
        0  enable_irq
        0  set_irq_priority
        0  stop
        0  wait
        0  write_vtor


   Section sizes:

   Bytes  Function/Label
   -----  --------------
       4  ??DataTable4
       4  ??DataTable4_1
       4  ??DataTable4_10
       4  ??DataTable4_2
       4  ??DataTable4_3
       4  ??DataTable4_4
       4  ??DataTable4_5
       4  ??DataTable4_6
       4  ??DataTable4_7
       4  ??DataTable4_8
       4  ??DataTable4_9
      90  disable_irq
     144  enable_irq
      26  set_irq_priority
      16  stop
      16  wait
       6  write_vtor

 
 342 bytes in section .text
 
 342 bytes of CODE memory

Errors: none
Warnings: none

⌨️ 快捷键说明

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