📄 test.lst
字号:
ARM COMPILER V2.32a, Test 28/02/08 23:05:56 PAGE 1
ARM COMPILER V2.32a, COMPILATION OF MODULE Test
OBJECT MODULE PLACED IN .\Output\Test.obj
COMPILER INVOKED BY: D:\Program Files\Keil\ARM\BIN\CA.exe Source\App\Test.c ARM BROWSE DEBUG PRINT(.\LIST\TEST.LST) TABS
-(4) OBJECT(.\Output\Test.obj)
stmt level source
1
2
3 #include <GGT_OS.h>
4
5 #include "Source\OS_CPU\lpc210X.h"
6
7 #define NOP() __asm{NOP}
8
9
10 UINT8 C;
11
12 UINT8 Buf[100];
13 INT32 Len = 0;
14
15 void IntUart0(void) __irq
16 {
17 1 NOP();NOP();
18 1 switch (U0IIR & 0x0e)
19 1 {
20 2 case 0x02:
21 2
22 2 break;
23 2
24 2 case 0x04:
25 2 while((U0LSR & 0x01) == 1)
26 2 C = U0RBR;
27 2 IOPIN ^= (1 << 27);
28 2 break;
29 2 case 0x0C:
30 2 while((U0LSR & 0x01) == 1)
31 2 {
32 3 C = U0RBR;
33 3 Buf[Len++] = C;
34 3 }
35 2 IOPIN ^= (1 << 27);
36 2 //while(1);
37 2 break;
38 2 default: break;
39 2 }
40 1 VICVectAddr = 0;
41 1 NOP();NOP();
42 1 //VICVectAddr = 0;
43 1 }
44
45 #define PLL_SCALE 5
46 #define Fosc 11059200
47 #define Fcclk (Fosc * PLL_SCALE)
48 #define Fcco (Fcclk * 4)
49 #define Fpclk (Fcclk / 1) * 1
50 #define Fwdt (Fpclk / 1)
51 #define Fadclk 1000000
52
53 #define IRQ_ENABLE (1<<5)
54
55 #define WDT_INT_VECT 0 // 分配IRQ通道
56 #define SOFT_INT_VECT 1 // 分配IRQ通道
57 #define TIME0_INT_VECT 4 // 分配IRQ通道
58 #define TIME1_INT_VECT 5 // 分配IRQ通道
ARM COMPILER V2.32a, Test 28/02/08 23:05:56 PAGE 2
59 #define UART0_INT_VECT 6 // 分配IRQ通道 1
60 #define UART1_INT_VECT 7 // 分配IRQ通道 2
61 #define PWM0_INT_VECT 8 // 分配IRQ通道
62 #define IIC_INT_VECT 9 // 分配IRQ通道 6
63 #define SPI0_INT_VECT 10 // 分配IRQ通道
64 #define SPI1_INT_VECT 11 // 分配IRQ通道
65 #define PLL_INT_VECT 12 // 分配IRQ通道
66 #define RTC_INT_VECT 13 // 分配IRQ通道 3
67 #define EINT0_INT_VECT 14 // 分配IRQ通道 4
68 #define EINT1_INT_VECT 15 // 分配IRQ通道
69 #define EINT2_INT_VECT 16 // 分配IRQ通道 5
70 #define EINT3_INT_VECT 17 // 分配IRQ通道
71 #define ADC0_INT_VECT 18 // 分配IRQ通道
72 //#define IIC1_INT_VECT 19 // 分配IRQ通道
73 //#define BOD_INT_VECT 20 // 分配IRQ通道
74 //#define ADC1_INT_VECT 21 // 分配IRQ通道
75
76 ///////////// EXTMODE
77 #define EXTMODE0 0 //
78 #define EXTMODE1 1 //
79 #define EXTMODE2 2 //
80 #define EXTMODE3 3 //
81
82 ///////////// EXTPOLAR
83 #define EXTPOLAR0 0 //
84 #define EXTPOLAR1 1 //
85 #define EXTPOLAR2 2 //
86 #define EXTPOLAR3 3 //
87
88 ///////////// EXTINT
89 #define EINT0 0
90 #define EINT1 1
91 #define EINT2 2
92 #define EINT3 3
93
94 #define CHK_UART0 16 // P0.16
95 #define CTL_UART0 17 // P0.17 =0:CPU对外,=1:
96 #define Uart0_OFF (IOSET|=(1<<CTL_UART0)) //关闭CPU的uart0(接电脑或其他)
97 #define Uart0_ON (IOCLR|=(1<<CTL_UART0)) //打开CPU的uart0(接电脑或其他)
98
99 void InitUart0(void)
100 {
101 1 unsigned short Fdiv;
102 1
103 1 PINSEL0 |= 0x00000005;
104 1 U0LCR = 0x83;
105 1
106 1 Fdiv = (Fpclk / 16) / (9600);
107 1 U0DLM = Fdiv / 256;
108 1 U0DLL = Fdiv % 256;
109 1
110 1 U0LCR = 0x03;
111 1 U0IER = 0x03;
112 1 U0FCR = 0xC7;
113 1
114 1 VICVectAddr2 = (unsigned long)IntUart0;
115 1 VICVectCntl2 = (IRQ_ENABLE | UART0_INT_VECT);
116 1 VICIntEnable |= (1 << UART0_INT_VECT);
117 1
118 1 IODIR |= (1<<17); //P0.17为输出
119 1 Uart0_ON;
120 1 }
121
122
123 #define Nop() __asm{NOP}
124
ARM COMPILER V2.32a, Test 28/02/08 23:05:56 PAGE 3
125
126 void SetWDT(void)
127 {
128 1 IOPIN ^= (1 << 28);
129 1 IOCLR = (1<<19);
130 1 Nop(); Nop();Nop(); Nop();Nop(); Nop();Nop(); Nop();
131 1 IOSET = (1<<19);
132 1 Nop(); Nop();Nop(); Nop();Nop(); Nop();Nop(); Nop();
133 1 }
134
135 INT32 IsBusy = 0;
136
137 void Dec(INT32 * Data, INT32 DecV)
138 {
139 1 (*Data) -= DecV;
140 1 }
141
142 void AddDec(UINT8 Flag, INT32 * Data, INT32 AddV, INT32 DecV)
143 {
144 1 (*Data) += AddV;
145 1 Dec(Data, DecV);
146 1 IsBusy = 1;
147 1 U0THR = Flag;
148 1 U0THR = *(((UINT8 *)Data) + 0);
149 1 U0THR = *(((UINT8 *)Data) + 1);
150 1 U0THR = *(((UINT8 *)Data) + 2);
151 1 U0THR = *(((UINT8 *)Data) + 3);
152 1 U0THR = ' ';
153 1 U0THR = ' ';
154 1 U0THR = ' ';
155 1 IsBusy = 0;
156 1 }
157
158 void Send(UINT8 Flag, INT32 *Data)
159 {
160 1 AddDec(Flag, Data, 2, 1);
161 1 }
162
163
164 UINT32 TaskID1 = 0;
165 _Mut Mut;
166
167 void TaskMain1(UINT32 Param) __task
168 {
169 1 _Msg Msg;
170 1 UINT32 ID;
171 1
172 1 OSTimerSet(OSTaskSelf(), 1000);
173 1 ID = OSTimerSet(OSTaskSelf(), 5000);
174 1 OSTimerSet(OSTaskSelf(), 10000);
175 1 OSTimerKill(ID);
176 1
177 1
178 1 while(Param == 156)
179 1 {
180 2 SetWDT();
181 2 OSTaskDelay(100);
182 2 if(OSTaskMsgPeek(&Msg))
183 2 {
184 3 if(Msg.Msg == 1000)
185 3 U0THR = Msg.wParam;
186 3 if(Msg.Msg == OS_MSG_TIMER)
187 3 U0THR = 'T';
188 3 }
189 2 }
190 1 }
ARM COMPILER V2.32a, Test 28/02/08 23:05:56 PAGE 4
191
192 void TaskMain2(UINT32 Param) __task
193 {
194 1 while(Param == 158)
195 1 {
196 2 IOPIN ^= (1 << 27);
197 2 OSMutWait(&Mut);
198 2 OSTaskMsgPost(TaskID1, 1000, '2', 0);
199 2 OSMutRelease(&Mut);
200 2 }
201 1 }
202
203 void TaskMain3(UINT32 Param) __task
204 {
205 1 while(Param == 158)
206 1 {
207 2 OSMutWait(&Mut);
208 2 OSTaskDelay(4000);
209 2 OSMutRelease(&Mut);
210 2 }
211 1 }
212
213 void TaskMain4(UINT32 Param) __task
214 {
215 1 while(Param == 158)
216 1 {
217 2 IOPIN ^= (1 << 29);
218 2 OSMutWait(&Mut);
219 2 OSTaskMsgPost(TaskID1, 1000, '4', 0);
220 2 OSMutRelease(&Mut);
221 2 }
222 1 }
223
224
225 void TaskUasrMain(void) __task
226 {
227 1 IODIR |= ((1 << 27) | (1 << 28) | (1 << 29) | (1 << 19));
228 1 IOCLR = ((1 << 27) | (1 << 28) | (1 << 29) | (1 << 19));
229 1 InitUart0();
230 1 U0THR = 'R';
231 1 OSMutInit(&Mut);
232 1 TaskID1 = OSTaskCreate(TaskMain1, 255, 156);
233 1 OSTaskCreate(TaskMain2, 254, 158);
234 1 OSTaskCreate(TaskMain3, 255, 158);
235 1 OSTaskCreate(TaskMain4, 255, 158);
236 1
237 1 while(1);
238 1 }
239
240
ARM COMPILER V2.32a, Test 28/02/08 23:05:56 PAGE 5
ASSEMBLY LISTING OF GENERATED OBJECT CODE
*** EXTERNALS:
EXTERN CODE32 (OSTaskCreate?A)
EXTERN CODE32 (OSTaskMsgPeek?A)
EXTERN CODE32 (OSTaskMsgPost?A)
EXTERN CODE32 (OSTaskSelf?A)
EXTERN CODE32 (OSTaskDelay?A)
EXTERN CODE32 (OSMutWait?A)
EXTERN CODE32 (OSMutRelease?A)
EXTERN CODE32 (OSMutInit?A)
EXTERN CODE32 (OSTimerKill?A)
EXTERN CODE32 (OSTimerSet?A)
EXTERN CODE32 (?C?SDIV?A)
*** PUBLICS:
PUBLIC IntUart0?A
PUBLIC InitUart0?A
PUBLIC SetWDT?A
PUBLIC Dec?A
PUBLIC AddDec?A
PUBLIC Send?A
PUBLIC TaskMain1?A
PUBLIC TaskMain2?A
PUBLIC TaskMain3?A
PUBLIC TaskMain4?A
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -