common.lst

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

LST
417
字号
###############################################################################
#                                                                             #
# IAR ANSI C/C++ Compiler V6.10.1.52143/W32 for ARM     16/Apr/2011  20:57:44 #
# Copyright 1999-2010 IAR Systems AB.                                         #
#                                                                             #
#    Cpu mode     =  thumb                                                    #
#    Endian       =  little                                                   #
#    Source file  =  E:\Project\15_K60\03_Software\02_My                      #
#                    program\K60_IAR\03_uart_int\src\Sources\C\Frame_C\common #
#                    .c                                                       #
#    Command line =  "E:\Project\15_K60\03_Software\02_My                     #
#                    program\K60_IAR\03_uart_int\src\Sources\C\Frame_C\common #
#                    .c" -D IAR -D TWR_K60N512 -lCN                           #
#                    "E:\Project\15_K60\03_Software\02_My                     #
#                    program\K60_IAR\03_uart_int\bin\Ram\List\" -lB           #
#                    "E:\Project\15_K60\03_Software\02_My                     #
#                    program\K60_IAR\03_uart_int\bin\Ram\List\" -o            #
#                    "E:\Project\15_K60\03_Software\02_My                     #
#                    program\K60_IAR\03_uart_int\bin\Ram\Obj\" --no_cse       #
#                    --no_unroll --no_inline --no_code_motion --no_tbaa       #
#                    --no_clustering --no_scheduling --debug --endian=little  #
#                    --cpu=Cortex-M4 -e --fpu=None --dlib_config              #
#                    D:\iar\arm\INC\c\DLib_Config_Normal.h -I                 #
#                    "E:\Project\15_K60\03_Software\02_My                     #
#                    program\K60_IAR\03_uart_int\src\Sources\H\" -I           #
#                    "E:\Project\15_K60\03_Software\02_My                     #
#                    program\K60_IAR\03_uart_int\src\Sources\H\Component_H\"  #
#                    -I "E:\Project\15_K60\03_Software\02_My                  #
#                    program\K60_IAR\03_uart_int\src\Sources\H\Frame_H\" -Ol  #
#                    --use_c++_inline                                         #
#    List file    =  E:\Project\15_K60\03_Software\02_My                      #
#                    program\K60_IAR\03_uart_int\bin\Ram\List\common.lst      #
#    Object file  =  E:\Project\15_K60\03_Software\02_My                      #
#                    program\K60_IAR\03_uart_int\bin\Ram\Obj\common.o         #
#                                                                             #
#                                                                             #
###############################################################################

E:\Project\15_K60\03_Software\02_My program\K60_IAR\03_uart_int\src\Sources\C\Frame_C\common.c
      1          //-------------------------------------------------------------------------*
      2          // 文件名: common.h (通用头文件)                                           *
      3          // 说  明:                                                                 *
      4          //-------------------------------------------------------------------------*
      5          
      6          #include "common.h"
      7          
      8          //-------------------------------------------------------------------------*
      9          //函数名: stop                                                             *
     10          //功  能: 设置CPU为STOP模式                                                * 
     11          //参  数: 无								   *	
     12          //返  回: 无                                                               *
     13          //说  明: 无                                                               *
     14          //-------------------------------------------------------------------------*

   \                                 In section .text, align 4, keep-with-next
     15          void stop (void)
     16          {
     17              //置位SLEEPDEEP来使能STOP模式
     18              SCB_SCR |= SCB_SCR_SLEEPDEEP_MASK;	
   \                     stop:
   \   00000000   ....               LDR.N    R0,??DataTable5  ;; 0xe000ed10
   \   00000002   0068               LDR      R0,[R0, #+0]
   \   00000004   50F00400           ORRS     R0,R0,#0x4
   \   00000008   ....               LDR.N    R1,??DataTable5  ;; 0xe000ed10
   \   0000000A   0860               STR      R0,[R1, #+0]
     19              //进入STOP模式
     20              asm("WFI");
   \   0000000C   30BF               WFI              
     21          }
   \   0000000E   7047               BX       LR               ;; return
     22          
     23          //-------------------------------------------------------------------------*
     24          //函数名: wait                                                             *
     25          //功  能: 设置CPU为WAIT模式                                                * 
     26          //参  数: 无								   *	
     27          //返  回: 无                                                               *
     28          //说  明: 无                                                               *
     29          //-------------------------------------------------------------------------*

   \                                 In section .text, align 4, keep-with-next
     30          void wait (void)
     31          {
     32              //清SLEEPDEEP位来确定进入WAIT模式
     33              SCB_SCR &= ~SCB_SCR_SLEEPDEEP_MASK;	
   \                     wait:
   \   00000000   ....               LDR.N    R0,??DataTable5  ;; 0xe000ed10
   \   00000002   0068               LDR      R0,[R0, #+0]
   \   00000004   30F00400           BICS     R0,R0,#0x4
   \   00000008   ....               LDR.N    R1,??DataTable5  ;; 0xe000ed10
   \   0000000A   0860               STR      R0,[R1, #+0]
     34              //进入WAIT模式
     35              asm("WFI");
   \   0000000C   30BF               WFI              
     36          }
   \   0000000E   7047               BX       LR               ;; return
     37          
     38          //-------------------------------------------------------------------------*
     39          //函数名: write_vtor                                                       *
     40          //功  能: 更改中断向量表偏移寄存器的值                                     * 
     41          //参  数: 要更改的值    						   *	
     42          //返  回: 无                                                               *
     43          //说  明: 无                                                               *
     44          //-------------------------------------------------------------------------*

   \                                 In section .text, align 2, keep-with-next
     45          void write_vtor (int vtor)
     46          {
     47              //写新值
     48              SCB_VTOR = vtor;	
   \                     write_vtor:
   \   00000000   ....               LDR.N    R1,??DataTable5_1  ;; 0xe000ed08
   \   00000002   0860               STR      R0,[R1, #+0]
     49          }
   \   00000004   7047               BX       LR               ;; return
     50          
     51          //-------------------------------------------------------------------------*
     52          //函数名: enable_irq                                                       *
     53          //功  能: 使能irq中断                                                      * 
     54          //参  数: irq:irq号       						   *	
     55          //返  回: 无                                                               *
     56          //说  明: irq号不是中断向量号                                              *
     57          //-------------------------------------------------------------------------*

   \                                 In section .text, align 2, keep-with-next
     58          void enable_irq (int irq)
     59          {
     60              int div;
     61          
     62              //确定irq号为有效的irq号
     63              if (irq > 91)	irq=91;
   \                     enable_irq:
   \   00000000   5C28               CMP      R0,#+92
   \   00000002   00DB               BLT.N    ??enable_irq_0
   \   00000004   5B20               MOVS     R0,#+91
     64              
     65              //确定对应的NVICISER
     66              div = irq/32;
   \                     ??enable_irq_0:
   \   00000006   2021               MOVS     R1,#+32
   \   00000008   90FBF1F1           SDIV     R1,R0,R1
     67              
     68              switch (div)
   \   0000000C   0029               CMP      R1,#+0
   \   0000000E   03D0               BEQ.N    ??enable_irq_1
   \   00000010   0229               CMP      R1,#+2
   \   00000012   29D0               BEQ.N    ??enable_irq_2
   \   00000014   14D3               BCC.N    ??enable_irq_3
   \   00000016   3AE0               B.N      ??enable_irq_4
     69              {
     70              	case 0x0:
     71                        NVICICPR0 = 1 << (irq%32);
   \                     ??enable_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   9940               LSLS     R1,R1,R3
   \   00000026   ....               LDR.N    R2,??DataTable5_2  ;; 0xe000e280
   \   00000028   1160               STR      R1,[R2, #+0]
     72                        NVICISER0 = 1 << (irq%32);
   \   0000002A   0121               MOVS     R1,#+1
   \   0000002C   2022               MOVS     R2,#+32
   \   0000002E   90FBF2F3           SDIV     R3,R0,R2
   \   00000032   03FB1203           MLS      R3,R3,R2,R0
   \   00000036   11FA03F0           LSLS     R0,R1,R3
   \   0000003A   ....               LDR.N    R1,??DataTable5_3  ;; 0xe000e100
   \   0000003C   0860               STR      R0,[R1, #+0]
     73                        break;
   \   0000003E   26E0               B.N      ??enable_irq_4
     74              	case 0x1:
     75                        NVICICPR1 = 1 << (irq%32);
   \                     ??enable_irq_3:
   \   00000040   0121               MOVS     R1,#+1
   \   00000042   2022               MOVS     R2,#+32
   \   00000044   90FBF2F3           SDIV     R3,R0,R2
   \   00000048   03FB1203           MLS      R3,R3,R2,R0
   \   0000004C   9940               LSLS     R1,R1,R3
   \   0000004E   ....               LDR.N    R2,??DataTable5_4  ;; 0xe000e284
   \   00000050   1160               STR      R1,[R2, #+0]
     76                        NVICISER1 = 1 << (irq%32);
   \   00000052   0121               MOVS     R1,#+1
   \   00000054   2022               MOVS     R2,#+32
   \   00000056   90FBF2F3           SDIV     R3,R0,R2
   \   0000005A   03FB1203           MLS      R3,R3,R2,R0
   \   0000005E   11FA03F0           LSLS     R0,R1,R3
   \   00000062   ....               LDR.N    R1,??DataTable5_5  ;; 0xe000e104
   \   00000064   0860               STR      R0,[R1, #+0]
     77                        break;
   \   00000066   12E0               B.N      ??enable_irq_4
     78              	case 0x2:
     79                        NVICICPR2 = 1 << (irq%32);
   \                     ??enable_irq_2:
   \   00000068   0121               MOVS     R1,#+1
   \   0000006A   2022               MOVS     R2,#+32
   \   0000006C   90FBF2F3           SDIV     R3,R0,R2
   \   00000070   03FB1203           MLS      R3,R3,R2,R0
   \   00000074   9940               LSLS     R1,R1,R3
   \   00000076   ....               LDR.N    R2,??DataTable5_6  ;; 0xe000e288
   \   00000078   1160               STR      R1,[R2, #+0]
     80                        NVICISER2 = 1 << (irq%32);
   \   0000007A   0121               MOVS     R1,#+1
   \   0000007C   2022               MOVS     R2,#+32
   \   0000007E   90FBF2F3           SDIV     R3,R0,R2
   \   00000082   03FB1203           MLS      R3,R3,R2,R0
   \   00000086   11FA03F0           LSLS     R0,R1,R3
   \   0000008A   ....               LDR.N    R1,??DataTable5_7  ;; 0xe000e108
   \   0000008C   0860               STR      R0,[R1, #+0]
     81                        break;
     82              }              

⌨️ 快捷键说明

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