?? uart.lst
字號:
ARM COMPILER V2.53, uart 23/07/06 16:59:03 PAGE 1
ARM COMPILER V2.53, COMPILATION OF MODULE uart
OBJECT MODULE PLACED IN uart.obj
COMPILER INVOKED BY: C:\Keil\ARM\BIN\CA.exe driver\uart.c THUMB WARNINGLEVEL(3) OPTIMIZE(8,SPEED) DEBUG PRINT(.\UART.LST
-) TABS(4) OBJECT(uart.obj)
stmt level source
1 /*------------------------------------------------------
2 FILE NAME : uart.c
3 DESCRIPTION : lpc2132 uart driver.
4 VERSION : 0.0.0 (C)aureole
5 AUTHOR : Aureole
6 CREATE DATE : 4.5.2006
7 MODIFY DATE : ---
8 LOGS :-\
9 1. First create for hardware test. 4.5.2006
10
11
12 --------------------------------------------------------*/
13 //---------------Include files--------------------------//
14
15 #include "..\include\uart.h"
16 #include "..\include\common.h"
17 #include <string.h>
18
19
20 //----------------variable -----------------------------//
21
22 char receive_buffer[BUFFER_SIZE];
23 unsigned char uart0_receive_count=0;
24 unsigned char uart0_receive_ok_flag=0;
25
26 //---------------Function-------------------------------//
27 /*--------------------------------------------------------
28 NAME : receive
29 ENTRY TYPE: unsigned char *
30 RETURN TYPE: void
31 PURPOSE : ---
32 VERSION : 0.1
33 DESCRIPTION:
34 CREATE DATE: 4.5.2006
35 LOGS : 1.first create;
36 ---------------------------------------------------------*/
37 void irq_uart0(void) __irq
38 {
39 1
40 1 // LED_ON
41 1 if((U0IIR & 0x0F) == 0x04){
42 2 receive_buffer[uart0_receive_count++]=U0RBR;
43 2 if(receive_buffer[uart0_receive_count-2]=='\r'&&
44 2 receive_buffer[uart0_receive_count-1]=='\n'){
45 3 uart0_receive_count=0;
46 3 uart0_receive_ok_flag=TRUE;
47 3 }
48 2
49 2 VICVectAddr = 0x00; // 中斷處理結束
50 2 }
51 1
52 1 /// LED_OFF
53 1 }
54 /*--------------------------------------------------------
55 NAME : initialize_uart0
56 ENTRY TYPE: void
57 RETURN TYPE: void
58 PURPOSE : ---
ARM COMPILER V2.53, uart 23/07/06 16:59:03 PAGE 2
59 VERSION : 0.1
60 DESCRIPTION:
61 CREATE DATE: 4.5.2006
62 LOGS : 1.first create;
63 ---------------------------------------------------------*/
64 void initialize_uart0(void)
65 {
66 1 unsigned short Fdiv;
67 1
68 1
69 1 PINSEL0 |= 0x00000005;
70 1
71 1 U0LCR = 0x83; // DLAB=1,允許設置波特率
72 1 Fdiv = (Fpclk / 16 ) / UART0_BPS; // 設置波特率 Fdiv= (VPB/(16*bps));
73 1 U0DLM = Fdiv / 256;
74 1 U0DLL = Fdiv % 256;
75 1 U0LCR = 0x03;
76 1
77 1
78 1
79 1 U0FCR = 0x01; // 使能FIFO,并設置觸發點為1字節
80 1 U0IER = 0x01; // 允許RBR中斷,即接收中斷
81 1
82 1 // 使能IRQ中斷
83 1
84 1 VICIntSelect = 0x00000000; // 設置所有的通道為IRQ中斷
85 1 VICVectCntl0 = 0x20 | 0x06; // UART0分配到IRQ slot0,即最高優先級
86 1 VICVectAddr0 = (unsigned long int)irq_uart0; // 設置UART0向量地址
87 1 VICIntEnable |= 1 << 0x06; // 使能UART0中斷
88 1
89 1 }
90
91 #ifdef DEBUG_FROM_UART1
92 /*--------------------------------------------------------
93 NAME : initialize_uart1
94 ENTRY TYPE: void
95 RETURN TYPE: void
96 PURPOSE : ---
97 VERSION : 0.1
98 DESCRIPTION:
99 CREATE DATE: 4.12.2006
100 LOGS : 1.first create;
101 ---------------------------------------------------------*/
102 void initialize_uart1(void)
103 {
104 1 unsigned short Fdiv;
105 1
106 1
107 1 PINSEL0 |= 0x00050000;
108 1
109 1 U1LCR = 0x83; // DLAB=1,允許設置波特率
110 1 Fdiv = (Fpclk / 16) / UART1_BPS; // 設置波特率
111 1 U1DLM = Fdiv / 256;
112 1 U1DLL = Fdiv % 256;
113 1 U1LCR = 0x03;
114 1
115 1
116 1 U1FCR = 0x01; // 使能FIFO,并設置觸發點為1字節
117 1 U1IER = 0x0; // 禁止中斷
118 1 }
119
120 /*--------------------------------------------------------
121 NAME : send_string_to_uart1
122 ENTRY TYPE: unsigned char *
123 RETURN TYPE: void
124 PURPOSE : ---
ARM COMPILER V2.53, uart 23/07/06 16:59:03 PAGE 3
125 VERSION : 0.1
126 DESCRIPTION:
127 CREATE DATE: 4.5.2006
128 LOGS : 1.first create;
129 ---------------------------------------------------------*/
130 void send_string_to_uart1(char * str)
131 {
132 1
133 1
134 1 while(*str!='\0'){
135 2 U1THR=(*str++);
136 2 while(!(U1LSR&0X40));
137 2 }
138 1
139 1 }
140
141 #endif //DEBUG_FROM_UART1
142
143 /*--------------------------------------------------------
144 NAME : send_string_to_uart0
145 ENTRY TYPE: unsigned char *
146 RETURN TYPE: void
147 PURPOSE : ---
148 VERSION : 0.1
149 DESCRIPTION:
150 CREATE DATE: 4.5.2006
151 LOGS : 1.first create;
152 ---------------------------------------------------------*/
153 void send_string_to_uart0(char * str)
154 {
155 1 // LED_ON
156 1
157 1 while(*str!='\0'){
158 2 U0THR=(*str++);
159 2 while(!(U0LSR&0X40));
160 2 }
161 1
162 1 // LED_OFF
163 1
164 1 }
165
166 /*--------------------------------------------------------
167 NAME : clear_receive_buffer
168 ENTRY TYPE: void
169 RETURN TYPE: void
170 PURPOSE : ---
171 VERSION : 0.1
172 DESCRIPTION:
173 CREATE DATE: 4.8.2006
174 LOGS : 1.first create;
175 ---------------------------------------------------------*/
176 void clear_receive_buffer(void)
177 {
178 1 memset(receive_buffer,0,sizeof(receive_buffer));
179 1
180 1 }
ARM COMPILER V2.53, uart 23/07/06 16:59:03 PAGE 4
ASSEMBLY LISTING OF GENERATED OBJECT CODE
*** EXTERNALS:
EXTERN CODE16 (memset?T)
*** PUBLICS:
PUBLIC initialize_uart0?T
PUBLIC send_string_to_uart0?T
PUBLIC clear_receive_buffer?T
PUBLIC initialize_uart1?T
PUBLIC send_string_to_uart1?T
PUBLIC irq_uart0?A
PUBLIC receive_buffer
PUBLIC uart0_receive_count
PUBLIC uart0_receive_ok_flag
*** DATA SEGMENT '?DT0?uart':
00000000 receive_buffer:
00000000 DS 100
00000064 uart0_receive_count:
00000064 BEGIN_INIT
00000064 00 DB 0x0
00000065 END_INIT
00000065 uart0_receive_ok_flag:
00000065 BEGIN_INIT
00000065 00 DB 0x0
00000066 END_INIT
*** CODE SEGMENT '?PR?irq_uart0?A?uart':
37: void irq_uart0(void) __irq
00000000 E92D000F STMDB R13!,{R0-R3}
41: if((U0IIR & 0x0F) == 0x04){
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -