📄 gpio.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 + -