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

📄 gpio.lst

📁 Cortex-M4+example
💻 LST
字号:
###############################################################################
#                                                                             #
# IAR ANSI C/C++ Compiler V6.10.1.52143/W32 for ARM     16/Apr/2011  20:57:45 #
# 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\Component_C\gp #
#                    io.c                                                     #
#    Command line =  "E:\Project\15_K60\03_Software\02_My                     #
#                    program\K60_IAR\03_uart_int\src\Sources\C\Component_C\gp #
#                    io.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\gpio.lst        #
#    Object file  =  E:\Project\15_K60\03_Software\02_My                      #
#                    program\K60_IAR\03_uart_int\bin\Ram\Obj\gpio.o           #
#                                                                             #
#                                                                             #
###############################################################################

E:\Project\15_K60\03_Software\02_My program\K60_IAR\03_uart_int\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   70B4               PUSH     {R4-R6}
     20               PORT_MemMapPtr p;
     21               switch((uint32)port)
   \   00000002   0500               MOVS     R5,R0
   \   00000004   ....               LDR.N    R6,??DataTable0  ;; 0x400ff000
   \   00000006   AD1B               SUBS     R5,R5,R6
   \   00000008   08D0               BEQ.N    ??gpio_init_0
   \   0000000A   403D               SUBS     R5,R5,#+64
   \   0000000C   08D0               BEQ.N    ??gpio_init_1
   \   0000000E   403D               SUBS     R5,R5,#+64
   \   00000010   08D0               BEQ.N    ??gpio_init_2
   \   00000012   403D               SUBS     R5,R5,#+64
   \   00000014   08D0               BEQ.N    ??gpio_init_3
   \   00000016   403D               SUBS     R5,R5,#+64
   \   00000018   08D0               BEQ.N    ??gpio_init_4
   \   0000001A   09E0               B.N      ??gpio_init_5
     22               {
     23               case 0x400FF000u:
     24                   p = PORTA_BASE_PTR;
   \                     ??gpio_init_0:
   \   0000001C   ....               LDR.N    R4,??DataTable0_1  ;; 0x40049000
     25                   break;
   \   0000001E   07E0               B.N      ??gpio_init_6
     26               case 0x400FF040u:
     27                   p = PORTB_BASE_PTR;
   \                     ??gpio_init_1:
   \   00000020   ....               LDR.N    R4,??DataTable0_2  ;; 0x4004a000
     28                   break;
   \   00000022   05E0               B.N      ??gpio_init_6
     29               case 0x400FF080u:
     30                   p = PORTC_BASE_PTR;
   \                     ??gpio_init_2:
   \   00000024   ....               LDR.N    R4,??DataTable0_3  ;; 0x4004b000
     31                   break;
   \   00000026   03E0               B.N      ??gpio_init_6
     32               case 0x400FF0C0u:
     33                   p = PORTD_BASE_PTR;
   \                     ??gpio_init_3:
   \   00000028   ....               LDR.N    R4,??DataTable0_4  ;; 0x4004c000
     34                   break;
   \   0000002A   01E0               B.N      ??gpio_init_6
     35               case 0x400FF100u:
     36                   p = PORTE_BASE_PTR;
   \                     ??gpio_init_4:
   \   0000002C   ....               LDR.N    R4,??DataTable0_5  ;; 0x4004d000
     37                   break;
   \   0000002E   FFE7               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   4FF48075           MOV      R5,#+256
   \   00000034   44F82150           STR      R5,[R4, R1, LSL #+2]
     42          
     43               if(dir == 1)//output
   \   00000038   012A               CMP      R2,#+1
   \   0000003A   15D1               BNE.N    ??gpio_init_7
     44               {
     45              	 GPIO_PDDR_REG(port) |= (1<<index);
   \   0000003C   4269               LDR      R2,[R0, #+20]
   \   0000003E   0124               MOVS     R4,#+1
   \   00000040   8C40               LSLS     R4,R4,R1
   \   00000042   2243               ORRS     R2,R4,R2
   \   00000044   4261               STR      R2,[R0, #+20]
     46              	 if(data == 1)//output
   \   00000046   012B               CMP      R3,#+1
   \   00000048   06D1               BNE.N    ??gpio_init_8
     47          			  GPIO_PDOR_REG(port) |= (1<<index);
   \   0000004A   0268               LDR      R2,[R0, #+0]
   \   0000004C   0123               MOVS     R3,#+1
   \   0000004E   13FA01F1           LSLS     R1,R3,R1
   \   00000052   1143               ORRS     R1,R1,R2
   \   00000054   0160               STR      R1,[R0, #+0]
   \   00000056   0EE0               B.N      ??gpio_init_9
     48          		 else
     49          			  GPIO_PDOR_REG(port) &= ~(1<<index);
   \                     ??gpio_init_8:
   \   00000058   0268               LDR      R2,[R0, #+0]
   \   0000005A   0123               MOVS     R3,#+1
   \   0000005C   13FA01F1           LSLS     R1,R3,R1
   \   00000060   32EA0101           BICS     R1,R2,R1
   \   00000064   0160               STR      R1,[R0, #+0]
   \   00000066   06E0               B.N      ??gpio_init_9
     50               }
     51                   
     52               else
     53                   GPIO_PDDR_REG(port) &= ~(1<<index);
   \                     ??gpio_init_7:
   \   00000068   4269               LDR      R2,[R0, #+20]
   \   0000006A   0123               MOVS     R3,#+1
   \   0000006C   13FA01F1           LSLS     R1,R3,R1
   \   00000070   32EA0101           BICS     R1,R2,R1
   \   00000074   4161               STR      R1,[R0, #+20]
     54          
     55          }
   \                     ??gpio_init_9:
   \   00000076   70BC               POP      {R4-R6}
   \   00000078   7047               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   012A               CMP      R2,#+1
   \   00000002   06D1               BNE.N    ??gpio_ctrl_0
     69                   GPIO_PDOR_REG(port) |= (1<<index);
   \   00000004   0268               LDR      R2,[R0, #+0]
   \   00000006   0123               MOVS     R3,#+1
   \   00000008   13FA01F1           LSLS     R1,R3,R1
   \   0000000C   1143               ORRS     R1,R1,R2
   \   0000000E   0160               STR      R1,[R0, #+0]
   \   00000010   06E0               B.N      ??gpio_ctrl_1
     70              else
     71                   GPIO_PDOR_REG(port) &= ~(1<<index);
   \                     ??gpio_ctrl_0:
   \   00000012   0268               LDR      R2,[R0, #+0]
   \   00000014   0123               MOVS     R3,#+1
   \   00000016   13FA01F1           LSLS     R1,R3,R1
   \   0000001A   32EA0101           BICS     R1,R2,R1
   \   0000001E   0160               STR      R1,[R0, #+0]
     72          }
   \                     ??gpio_ctrl_1:
   \   00000020   7047               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   0268               LDR      R2,[R0, #+0]
   \   00000002   0123               MOVS     R3,#+1
   \   00000004   13FA01F1           LSLS     R1,R3,R1
   \   00000008   5140               EORS     R1,R1,R2
   \   0000000A   0160               STR      R1,[R0, #+0]
     85          }
   \   0000000C   7047               BX       LR               ;; return

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

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

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

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

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

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

   Maximum stack usage in bytes:

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


   Section sizes:

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

 
 194 bytes in section .text
 
 194 bytes of CODE memory

Errors: none
Warnings: none

⌨️ 快捷键说明

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