📄 fio.lst
字号:
##############################################################################
# #
# IAR ARM ANSI C/C++ Compiler V4.42A/W32 EVALUATION 12/Dec/2008 17:14:24 #
# Copyright 1999-2005 IAR Systems. All rights reserved. #
# #
# Cpu mode = arm #
# Endian = little #
# Stack alignment = 4 #
# Source file = E:\IAR_2478\IAR_2478\26uCOS\Src\uCOS\Target\fio.c #
# Command line = E:\IAR_2478\IAR_2478\26uCOS\Src\uCOS\Target\fio.c #
# -lCN E:\IAR_2478\IAR_2478\26uCOS\Src\uCOS\RAM_Debug\ #
# List\ -o E:\IAR_2478\IAR_2478\26uCOS\Src\uCOS\RAM_De #
# bug\Obj\ -z2 --no_cse --no_unroll --no_inline #
# --no_code_motion --no_tbaa --no_clustering #
# --no_scheduling --debug --cpu_mode arm --endian #
# little --cpu ARM7TDMI-S --stack_align 4 -e --fpu #
# None --dlib_config "C:\Program Files\IAR #
# Systems\Embedded Workbench 4.0 #
# Evaluation\arm\LIB\dl4tpannl8n.h" -I #
# E:\IAR_2478\IAR_2478\26uCOS\Src\uCOS\include\ -I #
# E:\IAR_2478\IAR_2478\26uCOS\Src\uCOS\ucos-ii\include #
# \ -I "C:\Program Files\IAR Systems\Embedded #
# Workbench 4.0 Evaluation\arm\INC\" #
# List file = E:\IAR_2478\IAR_2478\26uCOS\Src\uCOS\RAM_Debug\List\ #
# fio.lst #
# Object file = E:\IAR_2478\IAR_2478\26uCOS\Src\uCOS\RAM_Debug\Obj\f #
# io.r79 #
# #
# #
##############################################################################
E:\IAR_2478\IAR_2478\26uCOS\Src\uCOS\Target\fio.c
1 /*****************************************************************************
2 * fio.c: Fast I/O module file for NXP LPC24xx Family Microprocessors
3 *
4 * Copyright(C) 2006, NXP Semiconductor
5 * All rights reserved.
6 *
7 * History
8 * 2006.07.13 ver 1.00 Prelimnary version, first Release
9 *
10 ******************************************************************************/
11 #include "LPC2468.h" /* LPC24xx definitions */
12 #include "type.h"
13 #include "irq.h"
14 #include "timer.h"
15 #include "fio.h"
16
17 /*****************************************************************************
18 ** Function name: GPIOInit
19 **
20 ** Descriptions: initialize GPIO port
21 **
22 ** parameters: port number and port type, Fast I/O or
23 ** regular GPIO, direction
24 ** Returned value: None
25 **
26 *****************************************************************************/
\ In segment CODE, align 4, keep-with-next
27 void GPIOInit( DWORD PortNum, DWORD PortType, DWORD PortDir )
28 {
29 if ( (PortType == REGULAR_PORT) && ((PortNum == 0) || (PortNum == 1)) )
\ GPIOInit:
\ 00000000 020051E3 CMP R1,#+2
\ 00000004 1800001A BNE ??GPIOInit_0
\ 00000008 000050E3 CMP R0,#+0
\ 0000000C 0100000A BEQ ??GPIOInit_1
\ 00000010 010050E3 CMP R0,#+1
\ 00000014 1400001A BNE ??GPIOInit_0
30 {
31 SCS &= ~GPIOM; /* set GPIOx to use regular I/O */
\ ??GPIOInit_1:
\ 00000018 B8309FE5 LDR R3,??GPIOInit_2 ;; 0xffffffffe01fc1a0
\ 0000001C B4C09FE5 LDR R12,??GPIOInit_2 ;; 0xffffffffe01fc1a0
\ 00000020 00C09CE5 LDR R12,[R12, #+0]
\ 00000024 01C0DCE3 BICS R12,R12,#0x1
\ 00000028 00C083E5 STR R12,[R3, #+0]
32 if ( PortDir == DIR_OUT )
\ 0000002C 010052E3 CMP R2,#+1
\ 00000030 0600001A BNE ??GPIOInit_3
33 {
34 (*(volatile unsigned long *)(REGULAR_PORT_DIR_BASE
35 + PortNum * REGULAR_PORT_DIR_INDEX)) = 0xFFFFFFFF;
\ 00000034 1030A0E3 MOV R3,#+16
\ 00000038 8EC2A0E3 MOV R12,#-536870904
\ 0000003C A0CB8CE3 ORR R12,R12,#0x28000
\ 00000040 93C02CE0 MLA R12,R3,R0,R12
\ 00000044 0030E0E3 MVN R3,#+0
\ 00000048 00308CE5 STR R3,[R12, #+0]
\ 0000004C 200000EA B ??GPIOInit_4
36 }
37 else
38 {
39 (*(volatile unsigned long *)(REGULAR_PORT_DIR_BASE
40 + PortNum * REGULAR_PORT_DIR_INDEX)) = 0x00000000;
\ ??GPIOInit_3:
\ 00000050 1030A0E3 MOV R3,#+16
\ 00000054 8EC2A0E3 MOV R12,#-536870904
\ 00000058 A0CB8CE3 ORR R12,R12,#0x28000
\ 0000005C 93C02CE0 MLA R12,R3,R0,R12
\ 00000060 0030A0E3 MOV R3,#+0
\ 00000064 00308CE5 STR R3,[R12, #+0]
\ 00000068 190000EA B ??GPIOInit_4
41 }
42 }
43 else if ( PortType == FAST_PORT )
\ ??GPIOInit_0:
\ 0000006C 010051E3 CMP R1,#+1
\ 00000070 1700001A BNE ??GPIOInit_4
44 {
45 if ( (PortNum == 0) || (PortNum == 1) )
\ 00000074 000050E3 CMP R0,#+0
\ 00000078 0100000A BEQ ??GPIOInit_5
\ 0000007C 010050E3 CMP R0,#+1
\ 00000080 0400001A BNE ??GPIOInit_6
46 {
47 SCS |= GPIOM; /* set GPIOx to use Fast I/O */
\ ??GPIOInit_5:
\ 00000084 4C309FE5 LDR R3,??GPIOInit_2 ;; 0xffffffffe01fc1a0
\ 00000088 48C09FE5 LDR R12,??GPIOInit_2 ;; 0xffffffffe01fc1a0
\ 0000008C 00C09CE5 LDR R12,[R12, #+0]
\ 00000090 01C09CE3 ORRS R12,R12,#0x1
\ 00000094 00C083E5 STR R12,[R3, #+0]
48 }
49 if ( PortDir == DIR_OUT )
\ ??GPIOInit_6:
\ 00000098 010052E3 CMP R2,#+1
\ 0000009C 0600001A BNE ??GPIOInit_7
50 {
51 (*(volatile unsigned long *)(HS_PORT_DIR_BASE
52 + PortNum * HS_PORT_DIR_INDEX)) = 0xFFFFFFFF;
\ 000000A0 2030A0E3 MOV R3,#+32
\ 000000A4 FFC5A0E3 MOV R12,#+1069547520
\ 000000A8 FFC98CE3 ORR R12,R12,#0x3FC000
\ 000000AC 93C02CE0 MLA R12,R3,R0,R12
\ 000000B0 0030E0E3 MVN R3,#+0
\ 000000B4 00308CE5 STR R3,[R12, #+0]
\ 000000B8 050000EA B ??GPIOInit_4
53 }
54 else
55 {
56 (*(volatile unsigned long *)(HS_PORT_DIR_BASE
57 + PortNum * HS_PORT_DIR_INDEX)) = 0x00000000;
\ ??GPIOInit_7:
\ 000000BC 2030A0E3 MOV R3,#+32
\ 000000C0 FFC5A0E3 MOV R12,#+1069547520
\ 000000C4 FFC98CE3 ORR R12,R12,#0x3FC000
\ 000000C8 93C02CE0 MLA R12,R3,R0,R12
\ 000000CC 0030A0E3 MOV R3,#+0
\ 000000D0 00308CE5 STR R3,[R12, #+0]
58 }
59 }
60 return;
\ ??GPIOInit_4:
\ 000000D4 0EF0A0E1 MOV PC,LR ;; return
\ ??GPIOInit_2:
\ 000000D8 A0C11FE0 DC32 0xffffffffe01fc1a0
61 }
62
\ In segment CODE, align 4, keep-with-next
63 void LedsInit(void) // 初始化led端口
64 {
65 FIO3CLR = 0x0f000000; // P3.24~P3.27
\ LedsInit:
\ 00000000 F003E0E3 MVN R0,#-1073741821
\ 00000004 FE0DC0E3 BIC R0,R0,#0x3F80
\ 00000008 F016A0E3 MOV R1,#+251658240
\ 0000000C 001080E5 STR R1,[R0, #+0]
66 }
\ 00000010 0EF0A0E1 MOV PC,LR ;; return
67
\ In segment CODE, align 4, keep-with-next
68 void LedOn(unsigned int n) // 点亮第n个led
69 {
70 unsigned long LEDData=0x01000000;
\ LedOn:
\ 00000000 4027A0E3 MOV R2,#+16777216
\ 00000004 0210B0E1 MOVS R1,R2
71 n = n % 4; // 总共4个灯
\ 00000008 030010E2 ANDS R0,R0,#0x3 ;; Zero extend
72 LEDData = LEDData << n; // 移到对应位
\ 0000000C 1110B0E1 LSLS R1,R1,R0
73 FIO3SET = LEDData; // 置1点亮
\ 00000010 7C22E0E3 MVN R2,#-1073741817
\ 00000014 FE2DC2E3 BIC R2,R2,#0x3F80
\ 00000018 001082E5 STR R1,[R2, #+0]
74
75
76 }
\ 0000001C 0EF0A0E1 MOV PC,LR ;; return
77
\ In segment CODE, align 4, keep-with-next
78 void LedOff(unsigned int n) // 熄灭第n个led
79 {
80 unsigned long LEDData=0x01000000;
\ LedOff:
\ 00000000 4027A0E3 MOV R2,#+16777216
\ 00000004 0210B0E1 MOVS R1,R2
81 n = n % 4;
\ 00000008 030010E2 ANDS R0,R0,#0x3 ;; Zero extend
82 LEDData = LEDData << n;
\ 0000000C 1110B0E1 LSLS R1,R1,R0
83 FIO3CLR = LEDData; // 置0熄灭
\ 00000010 F023E0E3 MVN R2,#-1073741821
\ 00000014 FE2DC2E3 BIC R2,R2,#0x3F80
\ 00000018 001082E5 STR R1,[R2, #+0]
84
85 }
\ 0000001C 0EF0A0E1 MOV PC,LR ;; return
86
87 /*********************************************************************************
88 ** End Of File
89 *********************************************************************************/
Maximum stack usage in bytes:
Function CSTACK
-------- ------
GPIOInit 0
LedOff 0
LedOn 0
LedsInit 0
Segment part sizes:
Function/Label Bytes
-------------- -----
GPIOInit 220
LedsInit 20
LedOn 32
LedOff 32
304 bytes in segment CODE
304 bytes of CODE memory
Errors: none
Warnings: none
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -