📄 system.lst
字号:
###############################################################################
# #
# 18/Apr/2009 12:21:29 #
# IAR ARM ANSI C/C++ Compiler V5.11.0.30622/W32 KICKSTART #
# Copyright 1999-2007 IAR Systems. All rights reserved. #
# #
# Cpu mode = thumb #
# Endian = little #
# Source file = J:\IAR5\LPC2148_UART\src\system.c #
# Command line = J:\IAR5\LPC2148_UART\src\system.c -lCN #
# J:\IAR5\LPC2148_UART\Debug\List\ -o #
# J:\IAR5\LPC2148_UART\Debug\Obj\ --no_cse --no_unroll #
# --no_inline --no_code_motion --no_tbaa --no_clustering #
# --no_scheduling --debug --endian little --cpu #
# ARM7TDMI-S -e --fpu None --dlib_config "C:\Program #
# Files\IAR Systems\Embedded Workbench 5.0 #
# Kickstart\ARM\INC\DLib_Config_Normal.h" -I #
# J:\IAR5\LPC2148_UART\include\ -I "C:\Program Files\IAR #
# Systems\Embedded Workbench 5.0 Kickstart\ARM\INC\" #
# --interwork --cpu_mode thumb -Ol #
# List file = J:\IAR5\LPC2148_UART\Debug\List\system.lst #
# Object file = J:\IAR5\LPC2148_UART\Debug\Obj\system.o #
# #
# #
###############################################################################
J:\IAR5\LPC2148_UART\src\system.c
1 //system.c
2 #include <iolpc2148.h>
3 #include "system.h"
4
5 #define VIC_TIMER0_bit (1 << VIC_TIMER0)
6
7 // 根据电路板上晶振设置振荡器频率
8 //#define OSCILLATOR_CLOCK_FREQUENCY 14745600 //in MHz
9 #define OSCILLATOR_CLOCK_FREQUENCY 12000000 //in MHz
10
11
\ In section .text, align 4, keep-with-next
12 unsigned int GetCclk(void) { // 获得实际处理器时钟频率
\ GetCclk:
\ 00000000 01B5 PUSH {R0,LR}
13 return OSCILLATOR_CLOCK_FREQUENCY * (PLLCON & 1 ? (PLLCFG & 0xF) + 1 : 1);
\ 00000002 .... LDR R0,??DataTable9 ;; 0xe01fc080
\ 00000004 0068 LDR R0,[R0, #+0]
\ 00000006 C007 LSLS R0,R0,#+31
\ 00000008 05D5 BPL ??GetCclk_0
\ 0000000A .... LDR R0,??DataTable5 ;; 0xe01fc084
\ 0000000C 0068 LDR R0,[R0, #+0]
\ 0000000E 0007 LSLS R0,R0,#+28 ;; ZeroExtS R0,R0,#+28,#+28
\ 00000010 000F LSRS R0,R0,#+28
\ 00000012 401C ADDS R0,R0,#+1
\ 00000014 00E0 B ??GetCclk_1
\ ??GetCclk_0:
\ 00000016 0120 MOVS R0,#+1
\ ??GetCclk_1:
\ 00000018 0249 LDR R1,??GetCclk_2 ;; 0xb71b00
\ 0000001A 4843 MULS R0,R1,R0
\ 0000001C 08BC POP {R3}
\ 0000001E 02BC POP {R1}
\ 00000020 0847 BX R1 ;; return
\ 00000022 C046 Nop
\ ??GetCclk_2:
\ 00000024 001BB700 DC32 0xb71b00
\ 00000028 REQUIRE _A_PLLCON
\ 00000028 REQUIRE _A_PLLCFG
14 }
15
16 //获得外围功能时钟频率
\ In section .text, align 4, keep-with-next
17 unsigned int GetPclk(void) {
\ GetPclk:
\ 00000000 10B5 PUSH {R4,LR}
18 unsigned int divider;
19 switch (VPBDIV & 3) {
\ 00000002 0C48 LDR R0,??GetPclk_0 ;; 0xe01fc100
\ 00000004 0068 LDR R0,[R0, #+0]
\ 00000006 8007 LSLS R0,R0,#+30 ;; ZeroExtS R0,R0,#+30,#+30
\ 00000008 800F LSRS R0,R0,#+30
\ 0000000A 0028 CMP R0,#+0
\ 0000000C 04D0 BEQ ??GetPclk_1
\ 0000000E 401E SUBS R0,R0,#+1
\ 00000010 04D0 BEQ ??GetPclk_2
\ 00000012 401E SUBS R0,R0,#+1
\ 00000014 04D0 BEQ ??GetPclk_3
\ 00000016 04E0 B ??GetPclk_4
20 case 0: divider = 4; break;
\ ??GetPclk_1:
\ 00000018 0424 MOVS R4,#+4
\ 0000001A 02E0 B ??GetPclk_4
21 case 1: divider = 1; break;
\ ??GetPclk_2:
\ 0000001C 0124 MOVS R4,#+1
\ 0000001E 00E0 B ??GetPclk_4
22 case 2: divider = 2; break;
\ ??GetPclk_3:
\ 00000020 0224 MOVS R4,#+2
23 }
24 return GetCclk() / divider;
\ ??GetPclk_4:
\ 00000022 ........ BL GetCclk
\ 00000026 2100 MOVS R1,R4
\ 00000028 ........ BL __aeabi_uidivmod
\ 0000002C 10BC POP {R4}
\ 0000002E 02BC POP {R1}
\ 00000030 0847 BX R1 ;; return
\ 00000032 C046 Nop
\ ??GetPclk_0:
\ 00000034 00C11FE0 DC32 0xe01fc100
\ 00000038 REQUIRE _A_VPBDIV
25 }
26
27 //相乘或相除,这里是计算锁相环频率
\ In section .text, align 4, keep-with-next
28 void FrecInit(void) {
\ FrecInit:
\ 00000000 01B5 PUSH {R0,LR}
29 PLLCFG_bit.MSEL = 0x2; //M - 相乘
\ 00000002 .... LDR R0,??DataTable5 ;; 0xe01fc084
\ 00000004 0068 LDR R0,[R0, #+0]
\ 00000006 1F21 MOVS R1,#+31
\ 00000008 8843 BICS R0,R0,R1
\ 0000000A 0221 MOVS R1,#+2
\ 0000000C 0143 ORRS R1,R1,R0
\ 0000000E .... LDR R0,??DataTable5 ;; 0xe01fc084
\ 00000010 0160 STR R1,[R0, #+0]
30 PLLCFG_bit.PSEL = 0x1; //P - 相除
\ 00000012 .... LDR R0,??DataTable5 ;; 0xe01fc084
\ 00000014 0068 LDR R0,[R0, #+0]
\ 00000016 6021 MOVS R1,#+96
\ 00000018 8843 BICS R0,R0,R1
\ 0000001A 2021 MOVS R1,#+32
\ 0000001C 0143 ORRS R1,R1,R0
\ 0000001E .... LDR R0,??DataTable5 ;; 0xe01fc084
\ 00000020 0160 STR R1,[R0, #+0]
31 PLLFEED_bit.FEED = 0xAA; //更改设置
\ 00000022 2448 LDR R0,??FrecInit_0 ;; 0xe01fc08c
\ 00000024 0068 LDR R0,[R0, #+0]
\ 00000026 FF21 MOVS R1,#+255
\ 00000028 8843 BICS R0,R0,R1
\ 0000002A AA21 MOVS R1,#+170
\ 0000002C 0143 ORRS R1,R1,R0
\ 0000002E 2148 LDR R0,??FrecInit_0 ;; 0xe01fc08c
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -