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

📄 gpio.lst

📁 Cortex-M4+example
💻 LST
字号:
###############################################################################
#                                                                             #
# IAR ANSI C/C++ Compiler V6.40.1.53790/W32 for ARM     09/Aug/2012  09:28:54 #
# Copyright 1999-2012 IAR Systems AB.                                         #
#                                                                             #
#    Cpu mode     =  thumb                                                    #
#    Endian       =  little                                                   #
#    Source file  =  C:\Users\305030973\Desktop\M4                            #
#                    example\02_uart_loop\src\Sources\C\Component_C\gpio.c    #
#    Command line =  "C:\Users\305030973\Desktop\M4                           #
#                    example\02_uart_loop\src\Sources\C\Component_C\gpio.c"   #
#                    -D IAR -D TWR_K60N512 -lCN "C:\Users\305030973\Desktop\M #
#                    4 example\02_uart_loop\bin\Flash\List\" -lB              #
#                    "C:\Users\305030973\Desktop\M4                           #
#                    example\02_uart_loop\bin\Flash\List\" -o                 #
#                    "C:\Users\305030973\Desktop\M4                           #
#                    example\02_uart_loop\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_Normal.h" -I                 #
#                    "C:\Users\305030973\Desktop\M4                           #
#                    example\02_uart_loop\src\Sources\H\" -I                  #
#                    "C:\Users\305030973\Desktop\M4                           #
#                    example\02_uart_loop\src\Sources\H\Component_H\" -I      #
#                    "C:\Users\305030973\Desktop\M4                           #
#                    example\02_uart_loop\src\Sources\H\Frame_H\" -Ol         #
#                    --use_c++_inline                                         #
#    List file    =  C:\Users\305030973\Desktop\M4                            #
#                    example\02_uart_loop\bin\Flash\List\gpio.lst             #
#    Object file  =  C:\Users\305030973\Desktop\M4                            #
#                    example\02_uart_loop\bin\Flash\Obj\gpio.o                #
#                                                                             #
#                                                                             #
###############################################################################

C:\Users\305030973\Desktop\M4 example\02_uart_loop\src\Sources\C\Component_C\gpio.c
      1          //-------------------------------------------------------------------------*
      2          // 文件名: gpio.c                                                          *
      3          // 说  明: gpio驱动程序文件                                                *
      4          //-------------------------------------------------------------------------*
      5          
      6          #include "gpio.h"     //包含gpio头文件
      7          
      8          //-------------------------------------------------------------------------*
      9          //函数名: gpio_init                                                        *
     10          //功  能: 初始化gpio                                                       * 
     11          //参  数: port:端口名                                                      *
     12          //        index:指定端口引脚                                               *
     13          //        dir:引脚方向,0=输入,1=输出                                       * 
     14          //        data:初始状态,0=低电平,1=高电平                                  *
     15          //返  回: 无                                                               *
     16          //说  明: 无                                                               *
     17          //-------------------------------------------------------------------------*

   \                                 In section .text, align 2, keep-with-next
     18          void gpio_init (GPIO_MemMapPtr port, int index, int dir,int data)
     19          {
   \                     gpio_init:
   \   00000000   0xB470             PUSH     {R4-R6}
     20               PORT_MemMapPtr p;
     21               switch((uint32)port)
   \   00000002   0x0005             MOVS     R5,R0
   \   00000004   0x....             LDR.N    R6,??DataTable0  ;; 0x400ff000
   \   00000006   0x1BAD             SUBS     R5,R5,R6
   \   00000008   0xD008             BEQ.N    ??gpio_init_0
   \   0000000A   0x3D40             SUBS     R5,R5,#+64
   \   0000000C   0xD008             BEQ.N    ??gpio_init_1
   \   0000000E   0x3D40             SUBS     R5,R5,#+64
   \   00000010   0xD008             BEQ.N    ??gpio_init_2
   \   00000012   0x3D40             SUBS     R5,R5,#+64
   \   00000014   0xD008             BEQ.N    ??gpio_init_3
   \   00000016   0x3D40             SUBS     R5,R5,#+64
   \   00000018   0xD008             BEQ.N    ??gpio_init_4
   \   0000001A   0xE009             B.N      ??gpio_init_5
     22               {
     23               case 0x400FF000u:
     24                   p = PORTA_BASE_PTR;
   \                     ??gpio_init_0:
   \   0000001C   0x....             LDR.N    R4,??DataTable0_1  ;; 0x40049000
     25                   break;
   \   0000001E   0xE007             B.N      ??gpio_init_6
     26               case 0x400FF040u:
     27                   p = PORTB_BASE_PTR;
   \                     ??gpio_init_1:
   \   00000020   0x....             LDR.N    R4,??DataTable0_2  ;; 0x4004a000
     28                   break;
   \   00000022   0xE005             B.N      ??gpio_init_6
     29               case 0x400FF080u:
     30                   p = PORTC_BASE_PTR;
   \                     ??gpio_init_2:
   \   00000024   0x....             LDR.N    R4,??DataTable0_3  ;; 0x4004b000
     31                   break;
   \   00000026   0xE003             B.N      ??gpio_init_6
     32               case 0x400FF0C0u:
     33                   p = PORTD_BASE_PTR;
   \                     ??gpio_init_3:
   \   00000028   0x....             LDR.N    R4,??DataTable0_4  ;; 0x4004c000
     34                   break;
   \   0000002A   0xE001             B.N      ??gpio_init_6
     35               case 0x400FF100u:
     36                   p = PORTE_BASE_PTR;
   \                     ??gpio_init_4:
   \   0000002C   0x....             LDR.N    R4,??DataTable0_5  ;; 0x4004d000
     37                   break;
   \   0000002E   0xE7FF             B.N      ??gpio_init_6
     38               default:
     39                   break;
     40               }
     41               PORT_PCR_REG(p,index)=(0|PORT_PCR_MUX(1));
   \                     ??gpio_init_5:
   \                     ??gpio_init_6:
   \   00000030   0xF44F 0x7580      MOV      R5,#+256
   \   00000034   0xF844 0x5021      STR      R5,[R4, R1, LSL #+2]
     42          
     43               if(dir == 1)//output
   \   00000038   0x2A01             CMP      R2,#+1
   \   0000003A   0xD115             BNE.N    ??gpio_init_7
     44               {
     45              	 GPIO_PDDR_REG(port) |= (1<<index);
   \   0000003C   0x6942             LDR      R2,[R0, #+20]
   \   0000003E   0x2401             MOVS     R4,#+1
   \   00000040   0x408C             LSLS     R4,R4,R1
   \   00000042   0x4322             ORRS     R2,R4,R2
   \   00000044   0x6142             STR      R2,[R0, #+20]
     46              	 if(data == 1)//output
   \   00000046   0x2B01             CMP      R3,#+1
   \   00000048   0xD106             BNE.N    ??gpio_init_8
     47          			  GPIO_PDOR_REG(port) |= (1<<index);
   \   0000004A   0x6802             LDR      R2,[R0, #+0]
   \   0000004C   0x2301             MOVS     R3,#+1
   \   0000004E   0xFA13 0xF101      LSLS     R1,R3,R1
   \   00000052   0x4311             ORRS     R1,R1,R2
   \   00000054   0x6001             STR      R1,[R0, #+0]
   \   00000056   0xE00E             B.N      ??gpio_init_9
     48          		 else
     49          			  GPIO_PDOR_REG(port) &= ~(1<<index);
   \                     ??gpio_init_8:
   \   00000058   0x6802             LDR      R2,[R0, #+0]
   \   0000005A   0x2301             MOVS     R3,#+1
   \   0000005C   0xFA13 0xF101      LSLS     R1,R3,R1
   \   00000060   0xEA32 0x0101      BICS     R1,R2,R1
   \   00000064   0x6001             STR      R1,[R0, #+0]
   \   00000066   0xE006             B.N      ??gpio_init_9
     50               }
     51                   
     52               else
     53                   GPIO_PDDR_REG(port) &= ~(1<<index);
   \                     ??gpio_init_7:
   \   00000068   0x6942             LDR      R2,[R0, #+20]
   \   0000006A   0x2301             MOVS     R3,#+1
   \   0000006C   0xFA13 0xF101      LSLS     R1,R3,R1
   \   00000070   0xEA32 0x0101      BICS     R1,R2,R1
   \   00000074   0x6141             STR      R1,[R0, #+20]
     54          
     55          }
   \                     ??gpio_init_9:
   \   00000076   0xBC70             POP      {R4-R6}
   \   00000078   0x4770             BX       LR               ;; return
     56          
     57          //-------------------------------------------------------------------------* 
     58          //函数名: gpio_ctrl                                                        *
     59          //功  能: 设置引脚状态                                                     *
     60          //参  数: port:端口名                                                      *
     61          //        index:指定端口引脚                                               *
     62          //        data: 状态,0=低电平,1=高电平                                     *
     63          //返  回: 无                                                               *
     64          //说  明: 无                                                               *
     65          //-------------------------------------------------------------------------*

   \                                 In section .text, align 2, keep-with-next
     66          void gpio_ctrl (GPIO_MemMapPtr port, int index, int data)
     67          {
     68              if(data == 1)//output
   \                     gpio_ctrl:
   \   00000000   0x2A01             CMP      R2,#+1
   \   00000002   0xD106             BNE.N    ??gpio_ctrl_0
     69                   GPIO_PDOR_REG(port) |= (1<<index);
   \   00000004   0x6802             LDR      R2,[R0, #+0]
   \   00000006   0x2301             MOVS     R3,#+1
   \   00000008   0xFA13 0xF101      LSLS     R1,R3,R1
   \   0000000C   0x4311             ORRS     R1,R1,R2
   \   0000000E   0x6001             STR      R1,[R0, #+0]
   \   00000010   0xE006             B.N      ??gpio_ctrl_1
     70              else
     71                   GPIO_PDOR_REG(port) &= ~(1<<index);
   \                     ??gpio_ctrl_0:
   \   00000012   0x6802             LDR      R2,[R0, #+0]
   \   00000014   0x2301             MOVS     R3,#+1
   \   00000016   0xFA13 0xF101      LSLS     R1,R3,R1
   \   0000001A   0xEA32 0x0101      BICS     R1,R2,R1
   \   0000001E   0x6001             STR      R1,[R0, #+0]
     72          }
   \                     ??gpio_ctrl_1:
   \   00000020   0x4770             BX       LR               ;; return
     73          
     74          //-----------------------------------------------------------------------* 
     75          //函数名: gpio_reverse                                                   *
     76          //功  能: 改变引脚状态                                                   *
     77          //参  数: port:端口名;                                                   *
     78          //        index:指定端口引脚                                             *
     79          //返  回: 无                                                             *
     80          //说  明: 无                                                             *
     81          //-----------------------------------------------------------------------*

   \                                 In section .text, align 2, keep-with-next
     82          void gpio_reverse (GPIO_MemMapPtr port, int index)
     83          {
     84              GPIO_PDOR_REG(port) ^= (1<<index);
   \                     gpio_reverse:
   \   00000000   0x6802             LDR      R2,[R0, #+0]
   \   00000002   0x2301             MOVS     R3,#+1
   \   00000004   0xFA13 0xF101      LSLS     R1,R3,R1
   \   00000008   0x4051             EORS     R1,R1,R2
   \   0000000A   0x6001             STR      R1,[R0, #+0]
     85          }
   \   0000000C   0x4770             BX       LR               ;; return

   \                                 In section .text, align 4, keep-with-next
   \                     ??DataTable0:
   \   00000000   0x400FF000         DC32     0x400ff000

   \                                 In section .text, align 4, keep-with-next
   \                     ??DataTable0_1:
   \   00000000   0x40049000         DC32     0x40049000

   \                                 In section .text, align 4, keep-with-next
   \                     ??DataTable0_2:
   \   00000000   0x4004A000         DC32     0x4004a000

   \                                 In section .text, align 4, keep-with-next
   \                     ??DataTable0_3:
   \   00000000   0x4004B000         DC32     0x4004b000

   \                                 In section .text, align 4, keep-with-next
   \                     ??DataTable0_4:
   \   00000000   0x4004C000         DC32     0x4004c000

   \                                 In section .text, align 4, keep-with-next
   \                     ??DataTable0_5:
   \   00000000   0x4004D000         DC32     0x4004d000

   Maximum stack usage in bytes:

   .cstack Function
   ------- --------
        0  gpio_ctrl
       12  gpio_init
        0  gpio_reverse


   Section sizes:

   Bytes  Function/Label
   -----  --------------
       4  ??DataTable0
       4  ??DataTable0_1
       4  ??DataTable0_2
       4  ??DataTable0_3
       4  ??DataTable0_4
       4  ??DataTable0_5
      34  gpio_ctrl
     122  gpio_init
      14  gpio_reverse

 
 194 bytes in section .text
 
 194 bytes of CODE memory

Errors: none
Warnings: none

⌨️ 快捷键说明

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