common.lst

来自「Cortex-M4+example」· LST 代码 · 共 417 行 · 第 1/2 页

LST
417
字号
     83          }
   \                     ??enable_irq_4:
   \   0000008E   7047               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   5C28               CMP      R0,#+92
   \   00000002   00DB               BLT.N    ??disable_irq_0
   \   00000004   5B20               MOVS     R0,#+91
     98              
     99              //确定对应的NVICISER
    100              div = irq/32;
   \                     ??disable_irq_0:
   \   00000006   2021               MOVS     R1,#+32
   \   00000008   90FBF1F1           SDIV     R1,R0,R1
    101              
    102              switch (div)
   \   0000000C   0029               CMP      R1,#+0
   \   0000000E   03D0               BEQ.N    ??disable_irq_1
   \   00000010   0229               CMP      R1,#+2
   \   00000012   17D0               BEQ.N    ??disable_irq_2
   \   00000014   0BD3               BCC.N    ??disable_irq_3
   \   00000016   1FE0               B.N      ??disable_irq_4
    103              {
    104              	case 0x0:
    105                         NVICICER0 = 1 << (irq%32);
   \                     ??disable_irq_1:
   \   00000018   0121               MOVS     R1,#+1
   \   0000001A   2022               MOVS     R2,#+32
   \   0000001C   90FBF2F3           SDIV     R3,R0,R2
   \   00000020   03FB1203           MLS      R3,R3,R2,R0
   \   00000024   11FA03F0           LSLS     R0,R1,R3
   \   00000028   ....               LDR.N    R1,??DataTable5_8  ;; 0xe000e180
   \   0000002A   0860               STR      R0,[R1, #+0]
    106                        break;
   \   0000002C   14E0               B.N      ??disable_irq_4
    107              	case 0x1:
    108                        NVICICER1 = 1 << (irq%32);
   \                     ??disable_irq_3:
   \   0000002E   0121               MOVS     R1,#+1
   \   00000030   2022               MOVS     R2,#+32
   \   00000032   90FBF2F3           SDIV     R3,R0,R2
   \   00000036   03FB1203           MLS      R3,R3,R2,R0
   \   0000003A   11FA03F0           LSLS     R0,R1,R3
   \   0000003E   ....               LDR.N    R1,??DataTable5_9  ;; 0xe000e184
   \   00000040   0860               STR      R0,[R1, #+0]
    109                        break;
   \   00000042   09E0               B.N      ??disable_irq_4
    110              	case 0x2:
    111                        NVICICER2 = 1 << (irq%32);
   \                     ??disable_irq_2:
   \   00000044   0121               MOVS     R1,#+1
   \   00000046   2022               MOVS     R2,#+32
   \   00000048   90FBF2F3           SDIV     R3,R0,R2
   \   0000004C   03FB1203           MLS      R3,R3,R2,R0
   \   00000050   11FA03F0           LSLS     R0,R1,R3
   \   00000054   ....               LDR.N    R1,??DataTable5_10  ;; 0xe000e188
   \   00000056   0860               STR      R0,[R1, #+0]
    112                        break;
    113              }              
    114          }
   \                     ??disable_irq_4:
   \   00000058   7047               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   5C28               CMP      R0,#+92
   \   00000002   00DB               BLT.N    ??set_irq_priority_0
   \   00000004   5B20               MOVS     R0,#+91
    130              if (prio > 15)	prio=15;
   \                     ??set_irq_priority_0:
   \   00000006   1029               CMP      R1,#+16
   \   00000008   00DB               BLT.N    ??set_irq_priority_1
   \   0000000A   0F21               MOVS     R1,#+15
    131          
    132              //确定对应的NVICISER
    133              prio_reg = (uint8 *)(((uint32)&NVICIP0) + irq);
   \                     ??set_irq_priority_1:
   \   0000000C   ....               LDR.N    R2,??DataTable5_11  ;; 0xe000e400
   \   0000000E   1018               ADDS     R0,R2,R0
    134              //设置优先级
    135              *prio_reg = ( (prio&0xF) << (8 - ARM_INTERRUPT_LEVEL_BITS) );             
   \   00000010   0901               LSLS     R1,R1,#+4
   \   00000012   0170               STRB     R1,[R0, #+0]
    136          }
   \   00000014   7047               BX       LR               ;; return

   \                                 In section .text, align 4, keep-with-next
   \                     ??DataTable5:
   \   00000000   10ED00E0           DC32     0xe000ed10

   \                                 In section .text, align 4, keep-with-next
   \                     ??DataTable5_1:
   \   00000000   08ED00E0           DC32     0xe000ed08

   \                                 In section .text, align 4, keep-with-next
   \                     ??DataTable5_2:
   \   00000000   80E200E0           DC32     0xe000e280

   \                                 In section .text, align 4, keep-with-next
   \                     ??DataTable5_3:
   \   00000000   00E100E0           DC32     0xe000e100

   \                                 In section .text, align 4, keep-with-next
   \                     ??DataTable5_4:
   \   00000000   84E200E0           DC32     0xe000e284

   \                                 In section .text, align 4, keep-with-next
   \                     ??DataTable5_5:
   \   00000000   04E100E0           DC32     0xe000e104

   \                                 In section .text, align 4, keep-with-next
   \                     ??DataTable5_6:
   \   00000000   88E200E0           DC32     0xe000e288

   \                                 In section .text, align 4, keep-with-next
   \                     ??DataTable5_7:
   \   00000000   08E100E0           DC32     0xe000e108

   \                                 In section .text, align 4, keep-with-next
   \                     ??DataTable5_8:
   \   00000000   80E100E0           DC32     0xe000e180

   \                                 In section .text, align 4, keep-with-next
   \                     ??DataTable5_9:
   \   00000000   84E100E0           DC32     0xe000e184

   \                                 In section .text, align 4, keep-with-next
   \                     ??DataTable5_10:
   \   00000000   88E100E0           DC32     0xe000e188

   \                                 In section .text, align 4, keep-with-next
   \                     ??DataTable5_11:
   \   00000000   00E400E0           DC32     0xe000e400
    137          

   Maximum stack usage in bytes:

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


   Section sizes:

     Function/Label   Bytes
     --------------   -----
     stop               16
     wait               16
     write_vtor          6
     enable_irq        144
     disable_irq        90
     set_irq_priority   22
     ??DataTable5        4
     ??DataTable5_1      4
     ??DataTable5_2      4
     ??DataTable5_3      4
     ??DataTable5_4      4
     ??DataTable5_5      4
     ??DataTable5_6      4
     ??DataTable5_7      4
     ??DataTable5_8      4
     ??DataTable5_9      4
     ??DataTable5_10     4
     ??DataTable5_11     4

 
 342 bytes in section .text
 
 342 bytes of CODE memory

Errors: none
Warnings: none

⌨️ 快捷键说明

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