📄 arm_00_os_main.lst
字号:
ARM COMPILER V2.00d, ARM_00_OS_main 22/12/07 19:56:45 PAGE 1
ARM COMPILER V2.00d, COMPILATION OF MODULE ARM_00_OS_main
OBJECT MODULE PLACED IN ARM_00_OS_main.OBJ
COMPILER INVOKED BY: C:\Keil\ARM\BIN\CA.exe ARM_00_OS_main.c THUMB DEBUG TABS(4)
stmt level source
1 /**********************************************************************************************
2 本程序只供学习使用,不得用于其它任何用途,否则后果自负。
3
4 ARM_OS_main.c file
5
6 LPC213x上的操作系统——ARM_OS
7
8 作者:heciang
9 联系电话:13811129591
10 QQ:176780142
11 Email:heciang@126.com
12 建立日期:2006-5-1
13 修改日期:2006-5-15
14 最后修改时间:2006-08-25
15 版本:V1.0
16
17 Copyright(C) Computer-lov 2006-2016
18 All rights reserved
19 **********************************************************************************************/
20
21 #include "CPU.H"
22
23 #include "My_type.h"
24 #include "LED.H"
25 #include "interrupt.h"
26 #include "ARM_00_OS_TaskSwitch.H"
27 #include "ARM_00_OS_Core.H"
28 #include "UART.H"
29 #include "KEYS.H"
30
31 /*********************************************************************************************/
32 void SysClkInit(void)
33 {
34 1 PLLCON=0x01; //Enable PLL
35 1 PLLCFG=0x24; //set M=4,P=2 so the core clock is about 5*11.0592M
36 1 PLLFEED=0xAA;
37 1 PLLFEED=0x55; //send PLL feed sequence
38 1
39 1 while((PLLSTAT&(1<<10))==0); //Wait for PLL Locked
40 1
41 1 PLLCON=3; //Enable and connect PLL
42 1 PLLFEED=0xAA;
43 1 PLLFEED=0x55; //send PLL feed sequence
44 1
45 1 VPBDIV=0x01; //VPB clock set. 0x01 --- same as the core clock
46 1
47 1 MAMCR=0x00;
48 1 MAMTIM=0x03; //set MAMTIM to 3cclk for core clock >40MHz
49 1 MAMCR=0x02; //use MAM
50 1 }
51 ///////////////////////////////////////////////////////////////////////////////////////////////
52
53 /**********************************************************************************************
54 main函数
55 **********************************************************************************************/
56 void main(void)
57 {
58 1
59 1 DisEnableInterrupt(OS_I_Bit | OS_F_Bit); //关中断
ARM COMPILER V2.00d, ARM_00_OS_main 22/12/07 19:56:45 PAGE 2
60 1
61 1 SysClkInit(); //系统时钟初始化
62 1
63 1 UART_init(); //串口初始化
64 1
65 1 DelayXms(100); //延迟100ms
66 1
67 1 cls(); //清屏
68 1
69 1 prints("SystemStart",1); //显示开机信息
70 1
71 1 OSInit(); //操作系统初始化
72 1
73 1 DelayXms(2000); //延时2S。软件仿真时最好去掉该句,否则有得你等^_^
74 1
75 1 OSEnterCritical(); //进入临界段
76 1
77 1 EnableInterrupt(OS_I_Bit | OS_F_Bit); //开中断
78 1
79 1 OSTickInit(); //系统时钟节拍初始化
80 1
81 1 OSStart((uint32)OSSystemIdle,OS_THUMB_MODE); //系统开始运行
82 1
83 1 }
84 //////////////////////////////////End of function//////////////////////////////////////////////
ARM COMPILER V2.00d, ARM_00_OS_main 22/12/07 19:56:45 PAGE 3
ASSEMBLY LISTING OF GENERATED OBJECT CODE
*** EXTERNALS:
EXTERN CODE16 (DisEnableInterrupt?T)
EXTERN CODE16 (EnableInterrupt?T)
EXTERN CODE16 (OSStart?T)
EXTERN CODE16 (OSInit?T)
EXTERN CODE16 (OSTickInit?T)
EXTERN CODE16 (OSSystemIdle?T)
EXTERN CODE16 (OSEnterCritical?T)
EXTERN CODE16 (UART_init?T)
EXTERN CODE16 (prints?T)
EXTERN CODE16 (cls?T)
EXTERN CODE16 (DelayXms?T)
EXTERN NUMBER (__startup)
*** PUBLICS:
PUBLIC SysClkInit?T
PUBLIC main
*** DATA SEGMENT '?CON?ARM_00_OS_main':
00000000 ??S_1:
00000000 DB 'SystemStart',0x00
*** CODE SEGMENT '?PR?SysClkInit?T?ARM_00_OS_main':
34: PLLCON=0x01; //Enable PLL
00000000 2101 MOV R1,#0x1
00000002 4800 LDR R0,=0xE01FC080
00000004 7001 STRB R1,[R0,#0x0]
35: PLLCFG=0x24; //set M=4,P=2 so the core clock is about 5*11.0592M
00000006 2124 MOV R1,#0x24
00000008 4800 LDR R0,=0xE01FC084
0000000A 7001 STRB R1,[R0,#0x0]
36: PLLFEED=0xAA;
0000000C 21AA MOV R1,#0xAA
0000000E 4800 LDR R0,=0xE01FC08C
00000010 7001 STRB R1,[R0,#0x0]
37: PLLFEED=0x55; //send PLL feed sequence
00000012 2155 MOV R1,#0x55
00000014 4800 LDR R0,=0xE01FC08C
00000016 7001 STRB R1,[R0,#0x0]
39: while((PLLSTAT&(1<<10))==0); //Wait for PLL Locked
00000018 L_1:
00000018 4800 LDR R0,=0xE01FC088
0000001A 8800 LDRH R0,[R0,#0x0]
0000001C 4800 LDR R1,=0x400
0000001E 4208 TST R0,R1
00000020 D0FA BEQ L_1 ; T=0x00000018
41: PLLCON=3; //Enable and connect PLL
00000022 2103 MOV R1,#0x3
00000024 4800 LDR R0,=0xE01FC080
00000026 7001 STRB R1,[R0,#0x0]
42: PLLFEED=0xAA;
00000028 21AA MOV R1,#0xAA
0000002A 4800 LDR R0,=0xE01FC08C
0000002C 7001 STRB R1,[R0,#0x0]
43: PLLFEED=0x55; //send PLL feed sequence
0000002E 2155 MOV R1,#0x55
00000030 4800 LDR R0,=0xE01FC08C
00000032 7001 STRB R1,[R0,#0x0]
45: VPBDIV=0x01; //VPB clock set. 0x01 --- same as the core clock
00000034 2101 MOV R1,#0x1
00000036 4800 LDR R0,=0xE01FC100
00000038 7001 STRB R1,[R0,#0x0]
47: MAMCR=0x00;
0000003A 2100 MOV R1,#0x0
ARM COMPILER V2.00d, ARM_00_OS_main 22/12/07 19:56:45 PAGE 4
0000003C 4800 LDR R0,=0xE01FC000
0000003E 7001 STRB R1,[R0,#0x0]
48: MAMTIM=0x03; //set MAMTIM to 3cclk for core clock >40MHz
00000040 2103 MOV R1,#0x3
00000042 4800 LDR R0,=0xE01FC004
00000044 7001 STRB R1,[R0,#0x0]
49: MAMCR=0x02; //use MAM
00000046 2102 MOV R1,#0x2
00000048 4800 LDR R0,=0xE01FC000
0000004A 7001 STRB R1,[R0,#0x0]
50: }
0000004C 4770 BX R14
0000004E ENDP ; 'SysClkInit?T'
*** CODE SEGMENT '?PR?main?ARM_00_OS_main':
56: void main(void)
00000000 B500 PUSH {LR}
59: DisEnableInterrupt(OS_I_Bit | OS_F_Bit); //关中断
00000002 20C0 MOV R0,#0xC0
00000004 DF00 SWI 0x0 ; DisEnableInterrupt?T
61: SysClkInit(); //系统时钟初始化
00000006 F7FF BL SysClkInit?T ; T=0x0001 (1)
00000008 FFFB BL SysClkInit?T ; T=0x0001 (2)
63: UART_init(); //串口初始化
0000000C F7FF BL UART_init?T ; T=0x0001 (1)
0000000E FFF8 BL UART_init?T ; T=0x0001 (2)
65: DelayXms(100); //延迟100ms
00000012 2064 MOV R0,#0x64
00000014 F7FF BL DelayXms?T ; T=0x0001 (1)
00000016 FFF4 BL DelayXms?T ; T=0x0001 (2)
67: cls(); //清屏
0000001A F7FF BL cls?T ; T=0x0001 (1)
0000001C FFF1 BL cls?T ; T=0x0001 (2)
69: prints("SystemStart",1); //显示开机信息
00000020 4800 LDR R0,=??S_1 ; ??S_1
00000022 2101 MOV R1,#0x1
00000024 F7FF BL prints?T ; T=0x0001 (1)
00000026 FFEC BL prints?T ; T=0x0001 (2)
71: OSInit(); //操作系统初始化
0000002A F7FF BL OSInit?T ; T=0x0001 (1)
0000002C FFE9 BL OSInit?T ; T=0x0001 (2)
73: DelayXms(2000); //延时2S。软件仿真时最好去掉该句,否则有得你等^_^
00000030 4800 LDR R0,=0x7D0
00000032 F7FF BL DelayXms?T ; T=0x0001 (1)
00000034 FFE5 BL DelayXms?T ; T=0x0001 (2)
75: OSEnterCritical(); //进入临界段
00000038 F7FF BL OSEnterCritical?T ; T=0x0001 (1)
0000003A FFE2 BL OSEnterCritical?T ; T=0x0001 (2)
77: EnableInterrupt(OS_I_Bit | OS_F_Bit); //开中断
0000003E 20C0 MOV R0,#0xC0
00000040 DF01 SWI 0x1 ; EnableInterrupt?T
79: OSTickInit(); //系统时钟节拍初始化
00000042 F7FF BL OSTickInit?T ; T=0x0001 (1)
00000044 FFDD BL OSTickInit?T ; T=0x0001 (2)
81: OSStart((uint32)OSSystemIdle,OS_THUMB_MODE); //系统开始运行
00000048 4800 LDR R0,=OSSystemIdle?T ; OSSystemIdle?T
0000004A 2120 MOV R1,#0x20
0000004C DF02 SWI 0x2 ; OSStart?T
83: }
0000004E BC08 POP {R3}
00000050 4718 BX R3
00000052 ENDP ; 'main'
Module Information Static
----------------------------------
code size = ------
data size = ------
ARM COMPILER V2.00d, ARM_00_OS_main 22/12/07 19:56:45 PAGE 5
const size = 12
End of Module Information.
ARM COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -