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

📄 common.lst

📁 Cortex-M4+example
💻 LST
📖 第 1 页 / 共 2 页
字号:
###############################################################################
#                                                                             #
# IAR ANSI C/C++ Compiler V6.40.1.53790/W32 for ARM     09/Aug/2012  10:07:32 #
# Copyright 1999-2012 IAR Systems AB.                                         #
#                                                                             #
#    Cpu mode     =  thumb                                                    #
#    Endian       =  little                                                   #
#    Source file  =  C:\Users\305030973\Desktop\M4                            #
#                    example\01_light\src\Sources\C\Frame_C\common.c          #
#    Command line =  "C:\Users\305030973\Desktop\M4                           #
#                    example\01_light\src\Sources\C\Frame_C\common.c" -D IAR  #
#                    -D TWR_K60N512 -lCN "C:\Users\305030973\Desktop\M4       #
#                    example\01_light\bin\Flash\List\" -lB                    #
#                    "C:\Users\305030973\Desktop\M4                           #
#                    example\01_light\bin\Flash\List\" -o                     #
#                    "C:\Users\305030973\Desktop\M4                           #
#                    example\01_light\bin\Flash\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 "C:\Program Files\IAR        #
#                    Systems\Embedded Workbench 6.4_2\arm\INC\c\DLib_Config_N #
#                    ormal.h" -I "C:\Users\305030973\Desktop\M4               #
#                    example\01_light\src\Sources\H\" -I                      #
#                    "C:\Users\305030973\Desktop\M4                           #
#                    example\01_light\src\Sources\H\Component_H\" -I          #
#                    "C:\Users\305030973\Desktop\M4                           #
#                    example\01_light\src\Sources\H\Frame_H\" -I "C:\Program  #
#                    Files\IAR Systems\Embedded Workbench 6.4_2\arm\INC\" -I  #
#                    "C:\Program Files\IAR Systems\Embedded Workbench         #
#                    6.4_2\arm\INC\CLIB\" -Ol --use_c++_inline                #
#    List file    =  C:\Users\305030973\Desktop\M4                            #
#                    example\01_light\bin\Flash\List\common.lst               #
#    Object file  =  C:\Users\305030973\Desktop\M4                            #
#                    example\01_light\bin\Flash\Obj\common.o                  #
#                                                                             #
#                                                                             #
###############################################################################

C:\Users\305030973\Desktop\M4 example\01_light\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   0x....             LDR.N    R0,??DataTable4  ;; 0xe000ed10
   \   00000002   0x6800             LDR      R0,[R0, #+0]
   \   00000004   0xF050 0x0004      ORRS     R0,R0,#0x4
   \   00000008   0x....             LDR.N    R1,??DataTable4  ;; 0xe000ed10
   \   0000000A   0x6008             STR      R0,[R1, #+0]
     19              //进入STOP模式
     20              asm("WFI");
   \   0000000C   0xBF30             WFI
     21          }
   \   0000000E   0x4770             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   0x....             LDR.N    R0,??DataTable4  ;; 0xe000ed10
   \   00000002   0x6800             LDR      R0,[R0, #+0]
   \   00000004   0xF030 0x0004      BICS     R0,R0,#0x4
   \   00000008   0x....             LDR.N    R1,??DataTable4  ;; 0xe000ed10
   \   0000000A   0x6008             STR      R0,[R1, #+0]
     34              //进入WAIT模式
     35              asm("WFI");
   \   0000000C   0xBF30             WFI
     36          }
   \   0000000E   0x4770             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   0x....             LDR.N    R1,??DataTable4_1  ;; 0xe000ed08
   \   00000002   0x6008             STR      R0,[R1, #+0]
     49          }
   \   00000004   0x4770             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   0x285C             CMP      R0,#+92
   \   00000002   0xDB00             BLT.N    ??enable_irq_0
   \   00000004   0x205B             MOVS     R0,#+91
     64              
     65              //确定对应的NVICISER
     66              div = irq/32;
   \                     ??enable_irq_0:
   \   00000006   0x2120             MOVS     R1,#+32
   \   00000008   0xFB90 0xF1F1      SDIV     R1,R0,R1
     67              
     68              switch (div)
   \   0000000C   0x2900             CMP      R1,#+0
   \   0000000E   0xD003             BEQ.N    ??enable_irq_1
   \   00000010   0x2902             CMP      R1,#+2
   \   00000012   0xD029             BEQ.N    ??enable_irq_2
   \   00000014   0xD314             BCC.N    ??enable_irq_3
   \   00000016   0xE03A             B.N      ??enable_irq_4
     69              {
     70              	case 0x0:
     71                        NVICICPR0 = 1 << (irq%32);
   \                     ??enable_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   0x4099             LSLS     R1,R1,R3
   \   00000026   0x....             LDR.N    R2,??DataTable4_2  ;; 0xe000e280
   \   00000028   0x6011             STR      R1,[R2, #+0]
     72                        NVICISER0 = 1 << (irq%32);
   \   0000002A   0x2101             MOVS     R1,#+1
   \   0000002C   0x2220             MOVS     R2,#+32
   \   0000002E   0xFB90 0xF3F2      SDIV     R3,R0,R2
   \   00000032   0xFB03 0x0312      MLS      R3,R3,R2,R0
   \   00000036   0xFA11 0xF003      LSLS     R0,R1,R3
   \   0000003A   0x....             LDR.N    R1,??DataTable4_3  ;; 0xe000e100
   \   0000003C   0x6008             STR      R0,[R1, #+0]
     73                        break;
   \   0000003E   0xE026             B.N      ??enable_irq_4
     74              	case 0x1:
     75                        NVICICPR1 = 1 << (irq%32);
   \                     ??enable_irq_3:
   \   00000040   0x2101             MOVS     R1,#+1
   \   00000042   0x2220             MOVS     R2,#+32
   \   00000044   0xFB90 0xF3F2      SDIV     R3,R0,R2
   \   00000048   0xFB03 0x0312      MLS      R3,R3,R2,R0
   \   0000004C   0x4099             LSLS     R1,R1,R3
   \   0000004E   0x....             LDR.N    R2,??DataTable4_4  ;; 0xe000e284
   \   00000050   0x6011             STR      R1,[R2, #+0]
     76                        NVICISER1 = 1 << (irq%32);
   \   00000052   0x2101             MOVS     R1,#+1
   \   00000054   0x2220             MOVS     R2,#+32
   \   00000056   0xFB90 0xF3F2      SDIV     R3,R0,R2
   \   0000005A   0xFB03 0x0312      MLS      R3,R3,R2,R0
   \   0000005E   0xFA11 0xF003      LSLS     R0,R1,R3
   \   00000062   0x....             LDR.N    R1,??DataTable4_5  ;; 0xe000e104
   \   00000064   0x6008             STR      R0,[R1, #+0]
     77                        break;
   \   00000066   0xE012             B.N      ??enable_irq_4
     78              	case 0x2:
     79                        NVICICPR2 = 1 << (irq%32);
   \                     ??enable_irq_2:
   \   00000068   0x2101             MOVS     R1,#+1
   \   0000006A   0x2220             MOVS     R2,#+32
   \   0000006C   0xFB90 0xF3F2      SDIV     R3,R0,R2
   \   00000070   0xFB03 0x0312      MLS      R3,R3,R2,R0
   \   00000074   0x4099             LSLS     R1,R1,R3
   \   00000076   0x....             LDR.N    R2,??DataTable4_6  ;; 0xe000e288
   \   00000078   0x6011             STR      R1,[R2, #+0]
     80                        NVICISER2 = 1 << (irq%32);
   \   0000007A   0x2101             MOVS     R1,#+1
   \   0000007C   0x2220             MOVS     R2,#+32
   \   0000007E   0xFB90 0xF3F2      SDIV     R3,R0,R2
   \   00000082   0xFB03 0x0312      MLS      R3,R3,R2,R0
   \   00000086   0xFA11 0xF003      LSLS     R0,R1,R3
   \   0000008A   0x....             LDR.N    R1,??DataTable4_7  ;; 0xe000e108

⌨️ 快捷键说明

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