target.lst
来自「ARM仿真案例」· LST 代码 · 共 229 行
LST
229 行
##############################################################################
# #
# IAR ARM ANSI C/C++ Compiler V4.31A/W32 20/Jul/2006 19:00:03 #
# Copyright 1999-2005 IAR Systems. All rights reserved. #
# Time limited license: 29 days left #
# #
# Cpu mode = interwork #
# Endian = little #
# Stack alignment = 4 #
# Source file = E:\Project\examples\IAR\基础实验\EINT1\target.c #
# Command line = E:\Project\examples\IAR\基础实验\EINT1\target.c #
# -lCN E:\Project\examples\IAR\基础实验\EINT1\Debug\Li #
# st\ -lA E:\Project\examples\IAR\基础实验\EINT1\Debug #
# \List\ -o E:\Project\examples\IAR\基础实验\EINT1\Deb #
# ug\Obj\ -s9 --debug --cpu_mode thumb --endian #
# little --cpu ARM7TDMI-S --stack_align 4 --interwork #
# -e --fpu None --dlib_config "E:\Program Files\IAR #
# Systems\Embedded Workbench #
# 4.0\ARM\LIB\dl4tptinl8n.h" -I "E:\Program Files\IAR #
# Systems\Embedded Workbench 4.0\ARM\INC\" #
# List file = E:\Project\examples\IAR\基础实验\EINT1\Debug\List\ta #
# rget.lst #
# Object file = E:\Project\examples\IAR\基础实验\EINT1\Debug\Obj\tar #
# get.r79 #
# #
# #
##############################################################################
E:\Project\examples\IAR\基础实验\EINT1\target.c
1 /**--------------文件信息--------------------------------------------------------------------------------
2 **文 件 名: target.c
3 **描 述: lpc210x(飞利浦的ARM)目标板特殊的代码,包括异常处理程序和目标板初始化程序
4 ** 每个工程应当具有这个文件的拷贝,用户根据程序的需要修改本文件。
5 **注 意:本文件必须以ARM(32位代码)方式编译,否则,必须更改init.s和vector.s文件
6 ** 别的C代码不必使用ARM(32位代码)方式编译
7 ********************************************************************************************************/
8
9 #define IN_TARGET
10 #include "config.h"
11
12 /*********************************************************************************************************
13 ** 函数名称: IRQ_Exception
14 ** 功能描述: 中断异常处理程序,用户根据需要自己改变程序
15 **
16 ** 输 入: 无
17 **
18 ** 输 出: 无
19 **
20 ** 全局变量: 无
21 ** 调用模块: 无
22 ********************************************************************************************************/
23 //void __irq IRQ_Exception(void)
24 //{
25 // while(1); // 这一句替换为自己的代码
26 //}
27
28 /*********************************************************************************************************
29 ** 函数名称: FIQ_Exception
30 ** 功能描述: 快速中断异常处理程序,用户根据需要自己改变程序
31 **
32 ** 输 入: 无
33 **
34 ** 输 出: 无
35 **
36 ** 全局变量: 无
37 ** 调用模块: 无
38 ********************************************************************************************************/
\ In segment CODE, align 4, keep-with-next
39 void FIQ_Exception(void)
40 {
41 while(1); // 这一句替换为自己的代码
\ FIQ_Exception:
\ ??FIQ_Exception_0:
\ 00000000 FEE7 B ??FIQ_Exception_0
42 }
43
44 /*********************************************************************************************************
45 ** 函数名称: TargetInit
46 ** 功能描述: 目标板初始化代码,在需要的地方调用,根据需要改变
47 ** 输 入: 无
48 **
49 ** 输 出: 无
50 **
51 ** 全局变量: 无
52 ** 调用模块: 无
53 ********************************************************************************************************/
\ In segment CODE, align 4, keep-with-next
54 void TargetInit(void)
55 {
56 /* 添加自己的代码 */
57 }
\ TargetInit:
\ 00000000 7047 BX LR ;; return
58
59 /*********************************************************************************************************
60 ** 函数名称: TargetResetInit
61 ** 功能描述: 调用main函数前目标板初始化代码,根据需要改变,不能删除
62 ** 输 入: 无
63 **
64 ** 输 出: 无
65 **
66 ** 全局变量: 无
67 ** 调用模块: 无
68 ********************************************************************************************************/
\ In segment CODE, align 4, keep-with-next
69 void TargetResetInit(void)
70 {
71
72 /* 设置系统各部分时钟 */
73 /* PLLCON = 1;
74 #if ((Fcclk / 4) / Fpclk) == 1
75 VPBDIV = 0;
76 #endif
77
78 #if ((Fcclk / 4) / Fpclk) == 2
79 VPBDIV = 2;
80 #endif
81
82 #if ((Fcclk / 4) / Fpclk) == 4
83 VPBDIV = 1;
84 #endif
85
86 #if (Fcco / Fcclk) == 2
87 PLLCFG = ((Fcclk / Fosc) - 1) | (0 << 5);
88 #endif
89 #if (Fcco / Fcclk) == 4
90 PLLCFG = ((Fcclk / Fosc) - 1) | (1 << 5);
91 #endif
92 #if (Fcco / Fcclk) == 8
93 PLLCFG = ((Fcclk / Fosc) - 1) | (2 << 5);
94 #endif
95 #if (Fcco / Fcclk) == 16
96 PLLCFG = ((Fcclk / Fosc) - 1) | (3 << 5);
97 #endif
98 PLLFEED = 0xaa;
99 PLLFEED = 0x55;
100 while((PLLSTAT & (1 << 10)) == 0);
101 PLLCON = 3;
102 PLLFEED = 0xaa;
103 PLLFEED = 0x55;
104 */
105
106 /* 设置存储器加速模块 */
107 MAMCR = 2; //MAMCR 8u2 00-MAM 功能被禁止、01-MAM功能部分使能、10-MAM功能完全使能
\ TargetResetInit:
\ 00000000 0748 LDR R0,??TargetResetInit_0 ;; 0xe01fc000
\ 00000002 0221 MOV R1,#+2
\ 00000004 0170 STRB R1,[R0, #+0]
108 /* MAMTIM 8u3
109 000=0-保留
110 001=1-一段时间内只有 1 个处理器时钟(cclk)用于 MAM 取指。
111 010=2-一段时间内只有2个处理器时钟(cclk)用于MAM取指。
112 011=3-一段时间内只有 3 个处理器时钟(cclk)用于 MAM 取指。
113 100=4-一段时间内只有4个处理器时钟(cclk)用于 MAM 取指。
114 101=5-一段时间内只有5 个处理器时钟(cclk)用于 MAM 取指。
115 110=6-一段时间内只有 6 个处理器时钟(cclk)用于 MAM 取指。
116 111=7-一段时间内只有7个处理器时钟(cclk)用于 MAM 取指。
117 */
118 #if Fcclk < 20000000
119 MAMTIM = 1;
120 #else
121 #if Fcclk < 40000000
122 MAMTIM = 2;
123 #else
124 MAMTIM = 3;
\ 00000006 0748 LDR R0,??TargetResetInit_0+0x4 ;; 0xe01fc004
\ 00000008 0321 MOV R1,#+3
\ 0000000A 0170 STRB R1,[R0, #+0]
125 #endif
126 #endif
127
128 /* 初始化VIC */
129 VICIntEnClr = 0xffffffff;//清所有中断使能,即关中断
\ 0000000C 0648 LDR R0,??TargetResetInit_0+0x8 ;; 0xfffff014
\ 0000000E 0021 MOV R1,#+0
\ 00000010 C943 MVN R1,R1 ;; #-1
\ 00000012 0160 STR R1,[R0, #+0]
130 VICVectAddr = 0;//默认向量地址寄存器
\ 00000014 0020 MOV R0,#+0
\ 00000016 0549 LDR R1,??TargetResetInit_0+0xC ;; 0xfffff030
\ 00000018 0860 STR R0,[R1, #+0]
131 VICIntSelect = 0;//1:对应的中断请求分配为FIQ。0:对应的中断请求分配为IRQ。
\ 0000001A 0549 LDR R1,??TargetResetInit_0+0x10 ;; 0xfffff00c
\ 0000001C 0860 STR R0,[R1, #+0]
132
133 /* 添加自己的代码 */
134
135 }
\ 0000001E 7047 BX LR ;; return
\ ??TargetResetInit_0:
\ 00000020 00C01FE0 DC32 0xe01fc000
\ 00000024 04C01FE0 DC32 0xe01fc004
\ 00000028 14F0FFFF DC32 0xfffff014
\ 0000002C 30F0FFFF DC32 0xfffff030
\ 00000030 0CF0FFFF DC32 0xfffff00c
136
137 /*********************************************************************************************************
138 ** End Of File
139 ********************************************************************************************************/
Maximum stack usage in bytes:
Function CSTACK
-------- ------
FIQ_Exception 4
TargetInit 0
TargetResetInit 0
Segment part sizes:
Function/Label Bytes
-------------- -----
??FIQ_Exception_0 2
TargetInit 2
TargetResetInit 52
Others 24
80 bytes in segment CODE
56 bytes of CODE memory (+ 24 bytes shared)
Errors: none
Warnings: none
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?