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