📄 uart.lst
字号:
###############################################################################
# #
# 06/Dec/2008 17:12:53 #
# IAR ARM ANSI C/C++ Compiler V5.11.0.20622/W32 EVALUATION #
# Copyright 1999-2007 IAR Systems. All rights reserved. #
# #
# Cpu mode = thumb #
# Endian = little #
# Source file = E:\ELE\yten\pro\message\uart.c #
# Command line = E:\ELE\yten\pro\message\uart.c -D EMB_FLASH -lCN #
# E:\ELE\yten\pro\Debug\List\ -lb #
# E:\ELE\yten\pro\Debug\List\ -o #
# E:\ELE\yten\pro\Debug\Obj\ --no_cse --no_unroll #
# --no_inline --no_code_motion --no_tbaa --no_clustering #
# --no_scheduling --debug --endian little --cpu Cortex-M3 #
# -e --fpu None --dlib_config "C:\Program Files\IAR #
# Systems\Embedded Workbench 5.0 #
# Evaluation\ARM\INC\DLib_Config_Normal.h" -I #
# E:\ELE\yten\pro\ -I E:\ELE\yten\pro\..\LIBRARY\INC\ -I #
# "C:\Program Files\IAR Systems\Embedded Workbench 5.0 #
# Evaluation\ARM\INC\" --section .text=.XML -On #
# List file = E:\ELE\yten\pro\Debug\List\uart.lst #
# Object file = E:\ELE\yten\pro\Debug\Obj\uart.o #
# #
# #
###############################################################################
E:\ELE\yten\pro\message\uart.c
1 #include"includes.h"
2 #include"ytep.h"
3 #include"ytepfunction.h"
\ In section .rodata, align 4
4 const Int16U BAUD_TAB[]={19500-50,9600,4800-50};
\ BAUD_TAB:
\ 00000000 FA4B80258E12 DC16 19450, 9600, 4750
\ 00000006 0000 DC8 0, 0
5 /*************************************************************************/
\ In section .XML, align 4, keep-with-next
6 Boolean FifoPush(pUartFifo_t Fifo, USART_TypeDef* USARTx)
7 {
\ FifoPush:
\ 00000000 73B5 PUSH {R0,R1,R4-R6,LR}
\ 00000002 0400 MOVS R4,R0
\ 00000004 0D00 MOVS R5,R1
8 volatile Int32U IndxTmp;
9 Fifo->Timer=0;
\ 00000006 0020 MOVS R0,#+0
\ 00000008 2071 STRB R0,[R4, #+4]
10 Fifo->PopIndx=0;
\ 0000000A 0020 MOVS R0,#+0
\ 0000000C 6080 STRH R0,[R4, #+2]
11 if(Fifo->PushIndx<20)
\ 0000000E 2088 LDRH R0,[R4, #+0]
\ 00000010 1428 CMP R0,#+20
\ 00000012 0CD2 BCS.N ??FifoPush_0
12 {
13 IndxTmp=Fifo->PushIndx;
\ 00000014 2088 LDRH R0,[R4, #+0]
\ 00000016 0090 STR R0,[SP, #+0]
14 Fifo->Buffer[IndxTmp]=USART_ReceiveData(USART1);//USARTx->DR;
\ 00000018 009E LDR R6,[SP, #+0]
\ 0000001A .... LDR.N R0,??DataTable36 ;; 0x40013800
\ 0000001C ........ BL USART_ReceiveData
\ 00000020 A119 ADDS R1,R4,R6
\ 00000022 8871 STRB R0,[R1, #+6]
15 Fifo->PushIndx++;
\ 00000024 2088 LDRH R0,[R4, #+0]
\ 00000026 401C ADDS R0,R0,#+1
\ 00000028 2080 STRH R0,[R4, #+0]
16 return (FALSE);
\ 0000002A 0020 MOVS R0,#+0
\ 0000002C 04E0 B.N ??FifoPush_1
17 }else
18 {
19 IndxTmp =USART_ReceiveData(USART1);
\ ??FifoPush_0:
\ 0000002E .... LDR.N R0,??DataTable36 ;; 0x40013800
\ 00000030 ........ BL USART_ReceiveData
\ 00000034 0090 STR R0,[SP, #+0]
20 return (TRUE);
\ 00000036 0120 MOVS R0,#+1
\ ??FifoPush_1:
\ 00000038 02B0 ADD SP,SP,#+8
\ 0000003A 70BD POP {R4-R6,PC} ;; return
21 }
22
23 }
24 /*************************************************************************/
\ In section .XML, align 4, keep-with-next
25 Boolean FifoPop(pUartFifo_t Fifo,USART_TypeDef* USARTx)
26 {
\ FifoPop:
\ 00000000 82B0 SUB SP,SP,#+8
\ 00000002 0200 MOVS R2,R0
27 volatile Int32U IndxTmp;
28 if(Fifo->PopIndx<=(Fifo->PushIndx+1))
\ 00000004 1088 LDRH R0,[R2, #+0]
\ 00000006 401C ADDS R0,R0,#+1
\ 00000008 5388 LDRH R3,[R2, #+2]
\ 0000000A 9842 CMP R0,R3
\ 0000000C 0ADB BLT.N ??FifoPop_0
29 {
30 IndxTmp=Fifo->PopIndx;
\ 0000000E 5088 LDRH R0,[R2, #+2]
\ 00000010 0090 STR R0,[SP, #+0]
31 USARTx->DR=Fifo->Buffer[IndxTmp];
\ 00000012 0098 LDR R0,[SP, #+0]
\ 00000014 1018 ADDS R0,R2,R0
\ 00000016 8079 LDRB R0,[R0, #+6]
\ 00000018 8880 STRH R0,[R1, #+4]
32 Fifo->PopIndx++;
\ 0000001A 5088 LDRH R0,[R2, #+2]
\ 0000001C 401C ADDS R0,R0,#+1
\ 0000001E 5080 STRH R0,[R2, #+2]
33 }else
34 {
35 return (FALSE);
36 }
37 return (TRUE);
\ 00000020 0120 MOVS R0,#+1
\ 00000022 00E0 B.N ??FifoPop_1
\ ??FifoPop_0:
\ 00000024 0020 MOVS R0,#+0
\ ??FifoPop_1:
\ 00000026 02B0 ADD SP,SP,#+8
\ 00000028 7047 BX LR ;; return
38 }
39 /////////////////////////////////////////////
\ In section .XML, align 4, keep-with-next
40 void Uart1Isr(void)
41 {
\ Uart1Isr:
\ 00000000 01B5 PUSH {R0,LR}
42 volatile unsigned int uart;
43 if(USART_GetFlagStatus(USART1,USART_FLAG_ORE))
\ 00000002 0821 MOVS R1,#+8
\ 00000004 .... LDR.N R0,??DataTable36 ;; 0x40013800
\ 00000006 ........ BL USART_GetFlagStatus
\ 0000000A 0028 CMP R0,#+0
\ 0000000C 09D0 BEQ.N ??Uart1Isr_0
44 {
45 USART_ClearFlag(USART1,USART_FLAG_ORE);
\ 0000000E 0821 MOVS R1,#+8
\ 00000010 .... LDR.N R0,??DataTable36 ;; 0x40013800
\ 00000012 ........ BL USART_ClearFlag
46 Uart1LineEvents.bOE = TRUE;
\ 00000016 3C48 LDR.N R0,??Uart1Isr_1 ;; Uart1LineEvents
\ 00000018 0068 LDR R0,[R0, #+0]
\ 0000001A 50F00200 ORRS R0,R0,#0x2
\ 0000001E 3A49 LDR.N R1,??Uart1Isr_1 ;; Uart1LineEvents
\ 00000020 0860 STR R0,[R1, #+0]
47 }
48 if(USART_GetFlagStatus(USART1,USART_FLAG_FE))
\ ??Uart1Isr_0:
\ 00000022 0221 MOVS R1,#+2
\ 00000024 .... LDR.N R0,??DataTable36 ;; 0x40013800
\ 00000026 ........ BL USART_GetFlagStatus
\ 0000002A 0028 CMP R0,#+0
\ 0000002C 09D0 BEQ.N ??Uart1Isr_2
49 {
50 USART_ClearFlag(USART1,USART_FLAG_FE);
\ 0000002E 0221 MOVS R1,#+2
\ 00000030 .... LDR.N R0,??DataTable36 ;; 0x40013800
\ 00000032 ........ BL USART_ClearFlag
51 // Framing Error
52 Uart1LineEvents.bFE = TRUE;
\ 00000036 3448 LDR.N R0,??Uart1Isr_1 ;; Uart1LineEvents
\ 00000038 0068 LDR R0,[R0, #+0]
\ 0000003A 50F00800 ORRS R0,R0,#0x8
\ 0000003E 3249 LDR.N R1,??Uart1Isr_1 ;; Uart1LineEvents
\ 00000040 0860 STR R0,[R1, #+0]
53 }
54 if(USART_GetFlagStatus(USART1,USART_FLAG_NE))
\ ??Uart1Isr_2:
\ 00000042 0421 MOVS R1,#+4
\ 00000044 .... LDR.N R0,??DataTable36 ;; 0x40013800
\ 00000046 ........ BL USART_GetFlagStatus
\ 0000004A 0028 CMP R0,#+0
\ 0000004C 09D0 BEQ.N ??Uart1Isr_3
55 {
56 USART_ClearFlag(USART1,USART_FLAG_NE);
\ 0000004E 0421 MOVS R1,#+4
\ 00000050 .... LDR.N R0,??DataTable36 ;; 0x40013800
\ 00000052 ........ BL USART_ClearFlag
57 // Noise Error
58 Uart1LineEvents.bFE = TRUE;
\ 00000056 2C48 LDR.N R0,??Uart1Isr_1 ;; Uart1LineEvents
\ 00000058 0068 LDR R0,[R0, #+0]
\ 0000005A 50F00800 ORRS R0,R0,#0x8
\ 0000005E 2A49 LDR.N R1,??Uart1Isr_1 ;; Uart1LineEvents
\ 00000060 0860 STR R0,[R1, #+0]
59 }
60 if(USART_GetFlagStatus(USART1,USART_FLAG_PE))
\ ??Uart1Isr_3:
\ 00000062 0121 MOVS R1,#+1
\ 00000064 .... LDR.N R0,??DataTable36 ;; 0x40013800
\ 00000066 ........ BL USART_GetFlagStatus
\ 0000006A 0028 CMP R0,#+0
\ 0000006C 09D0 BEQ.N ??Uart1Isr_4
61 {
62 USART_ClearFlag(USART1,USART_FLAG_PE);
\ 0000006E 0121 MOVS R1,#+1
\ 00000070 .... LDR.N R0,??DataTable36 ;; 0x40013800
\ 00000072 ........ BL USART_ClearFlag
63 // Parity Error
64 Uart1LineEvents.bPE = TRUE;
\ 00000076 2448 LDR.N R0,??Uart1Isr_1 ;; Uart1LineEvents
\ 00000078 0068 LDR R0,[R0, #+0]
\ 0000007A 50F00400 ORRS R0,R0,#0x4
\ 0000007E 2249 LDR.N R1,??Uart1Isr_1 ;; Uart1LineEvents
\ 00000080 0860 STR R0,[R1, #+0]
65 }
66
67 if(USART_GetFlagStatus(USART1,USART_FLAG_RXNE))// Push a new data into the receiver buffer
\ ??Uart1Isr_4:
\ 00000082 2021 MOVS R1,#+32
\ 00000084 .... LDR.N R0,??DataTable36 ;; 0x40013800
\ 00000086 ........ BL USART_GetFlagStatus
\ 0000008A 0028 CMP R0,#+0
\ 0000008C 05D0 BEQ.N ??Uart1Isr_5
68 {
69 //USART1_485RXD;
70 uart=FifoPush(pUart1RxFifo,USART1); // Push a new data into the receiver buffer
\ 0000008E .... LDR.N R1,??DataTable36 ;; 0x40013800
\ 00000090 .... LDR.N R0,??DataTable26 ;; pUart1RxFifo
\ 00000092 0068 LDR R0,[R0, #+0]
\ 00000094 ........ BL FifoPush
\ 00000098 0090 STR R0,[SP, #+0]
71 }
72
73 if(USART_GetFlagStatus(USART1,USART_FLAG_TXE)
74 && (USART_GetITStatus (USART1,USART_IT_TXE) == SET))
\ ??Uart1Isr_5:
\ 0000009A 8021 MOVS R1,#+128
\ 0000009C .... LDR.N R0,??DataTable36 ;; 0x40013800
\ 0000009E ........ BL USART_GetFlagStatus
\ 000000A2 0028 CMP R0,#+0
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -