📄 uart.lst
字号:
\ 000000A4 2DD0 BEQ.N ??Uart1Isr_6
\ 000000A6 .... LDR.N R1,??DataTable53 ;; 0x727
\ 000000A8 .... LDR.N R0,??DataTable36 ;; 0x40013800
\ 000000AA ........ BL USART_GetITStatus
\ 000000AE 0128 CMP R0,#+1
\ 000000B0 27D1 BNE.N ??Uart1Isr_6
75 {
76 USART_ClearFlag(USART1,USART_FLAG_TXE);
\ 000000B2 8021 MOVS R1,#+128
\ 000000B4 .... LDR.N R0,??DataTable36 ;; 0x40013800
\ 000000B6 ........ BL USART_ClearFlag
77 USART1_485TXD;
\ 000000BA .... LDR.N R0,??DataTable52 ;; 0x4001080c
\ 000000BC 0068 LDR R0,[R0, #+0]
\ 000000BE 0821 MOVS R1,#+8
\ 000000C0 8843 BICS R0,R0,R1
\ 000000C2 .... LDR.N R1,??DataTable52 ;; 0x4001080c
\ 000000C4 0860 STR R0,[R1, #+0]
78 if(FifoPop(pUart1TxFifo,USART1));
\ 000000C6 .... LDR.N R1,??DataTable36 ;; 0x40013800
\ 000000C8 .... LDR.N R0,??DataTable50 ;; pUart1TxFifo
\ 000000CA 0068 LDR R0,[R0, #+0]
\ 000000CC ........ BL FifoPop
\ 000000D0 0028 CMP R0,#+0
\ 000000D2 16D1 BNE.N ??Uart1Isr_6
79 else
80 {
81 USART_ITConfig(USART1,USART_IT_TXE ,DISABLE);//USART_IT_TXE指明是CRx,
\ 000000D4 0022 MOVS R2,#+0
\ 000000D6 .... LDR.N R1,??DataTable53 ;; 0x727
\ 000000D8 .... LDR.N R0,??DataTable36 ;; 0x40013800
\ 000000DA ........ BL USART_ITConfig
82 USART1_485RXD;
\ 000000DE .... LDR.N R0,??DataTable52 ;; 0x4001080c
\ 000000E0 0068 LDR R0,[R0, #+0]
\ 000000E2 50F00800 ORRS R0,R0,#0x8
\ 000000E6 .... LDR.N R1,??DataTable52 ;; 0x4001080c
\ 000000E8 0860 STR R0,[R1, #+0]
83 pUart1RxFifo->UsartStatus=pUart1TxFifo->UsartStatus=0;
\ 000000EA 0020 MOVS R0,#+0
\ 000000EC .... LDR.N R1,??DataTable50 ;; pUart1TxFifo
\ 000000EE 0968 LDR R1,[R1, #+0]
\ 000000F0 4871 STRB R0,[R1, #+5]
\ 000000F2 .... LDR.N R1,??DataTable26 ;; pUart1RxFifo
\ 000000F4 0968 LDR R1,[R1, #+0]
\ 000000F6 4871 STRB R0,[R1, #+5]
84 USART_ITConfig(USART1,USART_IT_RXNE,ENABLE);
\ 000000F8 0122 MOVS R2,#+1
\ 000000FA .... LDR.N R1,??DataTable40 ;; 0x525
\ 000000FC .... LDR.N R0,??DataTable36 ;; 0x40013800
\ 000000FE ........ BL USART_ITConfig
85 }
86 }
87 //if(Uart1RxFifo.PushIndx>20)
88 //USART_ITConfig(USART1,USART_IT_RXNE,DISABLE);
89 //uart=USART1->SR;
90 //uart=USART1->DR;
91 //uart=USART1->CR1 ;
92
93 }
\ ??Uart1Isr_6:
\ 00000102 01B0 ADD SP,SP,#+4
\ 00000104 00BD POP {PC} ;; return
\ 00000106 00BF Nop
\ ??Uart1Isr_1:
\ 00000108 ........ DC32 Uart1LineEvents
94 /****************************************************
95 *
96 *
97 *****************************************************/
\ In section .XML, align 4, keep-with-next
98 Boolean UsartRXD(pUartFifo_t Fifo,pUartFifo_t TFifo)
99 {
\ UsartRXD:
\ 00000000 F1B5 PUSH {R0,R4-R7,LR}
\ 00000002 0400 MOVS R4,R0
\ 00000004 0D00 MOVS R5,R1
100 Int16U x,x1;
101 x=0;
\ 00000006 0020 MOVS R0,#+0
\ 00000008 0600 MOVS R6,R0
102 if(Fifo->UsartStatus!=0)
\ 0000000A 6079 LDRB R0,[R4, #+5]
\ 0000000C 0028 CMP R0,#+0
\ 0000000E 0ED0 BEQ.N ??UsartRXD_0
103 {
104 USART_ITConfig(USART1,USART_IT_RXNE,DISABLE);
\ 00000010 0022 MOVS R2,#+0
\ 00000012 .... LDR.N R1,??DataTable40 ;; 0x525
\ 00000014 .... LDR.N R0,??DataTable36 ;; 0x40013800
\ 00000016 ........ BL USART_ITConfig
105 if(++TFifo->Timer>=250) Fifo->UsartStatus=0;
\ 0000001A 2879 LDRB R0,[R5, #+4]
\ 0000001C 401C ADDS R0,R0,#+1
\ 0000001E 2871 STRB R0,[R5, #+4]
\ 00000020 C0B2 UXTB R0,R0 ;; ZeroExtS R0,R0,#+24,#+24
\ 00000022 FA28 CMP R0,#+250
\ 00000024 01D3 BCC.N ??UsartRXD_1
\ 00000026 0020 MOVS R0,#+0
\ 00000028 6071 STRB R0,[R4, #+5]
106 return FALSE;
\ ??UsartRXD_1:
\ 0000002A 0020 MOVS R0,#+0
\ 0000002C 4FE0 B.N ??UsartRXD_2
107 }
108 USART1_485RXD;
\ ??UsartRXD_0:
\ 0000002E .... LDR.N R0,??DataTable52 ;; 0x4001080c
\ 00000030 0068 LDR R0,[R0, #+0]
\ 00000032 50F00800 ORRS R0,R0,#0x8
\ 00000036 .... LDR.N R1,??DataTable52 ;; 0x4001080c
\ 00000038 0860 STR R0,[R1, #+0]
109 TFifo->Timer=0;
\ 0000003A 0020 MOVS R0,#+0
\ 0000003C 2871 STRB R0,[R5, #+4]
110 ++Fifo->Timer;
\ 0000003E 2079 LDRB R0,[R4, #+4]
\ 00000040 401C ADDS R0,R0,#+1
\ 00000042 2071 STRB R0,[R4, #+4]
111 if((Fifo->PushIndx!=0)&&(Fifo->Timer>=C_FifoRxd)) //
\ 00000044 2088 LDRH R0,[R4, #+0]
\ 00000046 0028 CMP R0,#+0
\ 00000048 34D0 BEQ.N ??UsartRXD_3
\ 0000004A 2079 LDRB R0,[R4, #+4]
\ 0000004C 0328 CMP R0,#+3
\ 0000004E 31D3 BCC.N ??UsartRXD_3
112 {
113 if(Fifo->PushIndx>=2)
\ 00000050 2088 LDRH R0,[R4, #+0]
\ 00000052 0228 CMP R0,#+2
\ 00000054 02D3 BCC.N ??UsartRXD_4
114 x=Fifo->PushIndx-2;
\ 00000056 2088 LDRH R0,[R4, #+0]
\ 00000058 801E SUBS R0,R0,#+2
\ 0000005A 0600 MOVS R6,R0
115 x1=Fifo->Buffer[x+1];
\ ??UsartRXD_4:
\ 0000005C B6B2 UXTH R6,R6 ;; ZeroExtS R6,R6,#+16,#+16
\ 0000005E A019 ADDS R0,R4,R6
\ 00000060 C079 LDRB R0,[R0, #+7]
\ 00000062 0700 MOVS R7,R0
116 x1<<=8;
\ 00000064 BFB2 UXTH R7,R7 ;; ZeroExtS R7,R7,#+16,#+16
\ 00000066 3F02 LSLS R7,R7,#+8
117 x1+=Fifo->Buffer[x];
\ 00000068 B6B2 UXTH R6,R6 ;; ZeroExtS R6,R6,#+16,#+16
\ 0000006A A019 ADDS R0,R4,R6
\ 0000006C 8079 LDRB R0,[R0, #+6]
\ 0000006E 3F18 ADDS R7,R7,R0
118 x=cal_crc(Fifo->Buffer,(Int8U)x);
\ 00000070 3100 MOVS R1,R6
\ 00000072 C9B2 UXTB R1,R1 ;; ZeroExtS R1,R1,#+24,#+24
\ 00000074 2000 MOVS R0,R4
\ 00000076 801D ADDS R0,R0,#+6
\ 00000078 ........ BL cal_crc
\ 0000007C 0600 MOVS R6,R0
119 if((x==x1)&&(Fifo->Buffer[0]==_YT._ELE[0]))
\ 0000007E B6B2 UXTH R6,R6 ;; ZeroExtS R6,R6,#+16,#+16
\ 00000080 BFB2 UXTH R7,R7 ;; ZeroExtS R7,R7,#+16,#+16
\ 00000082 BE42 CMP R6,R7
\ 00000084 11D1 BNE.N ??UsartRXD_5
\ 00000086 A079 LDRB R0,[R4, #+6]
\ 00000088 1249 LDR.N R1,??UsartRXD_6 ;; _YT
\ 0000008A 0988 LDRH R1,[R1, #+0]
\ 0000008C 80B2 UXTH R0,R0 ;; ZeroExtS R0,R0,#+16,#+16
\ 0000008E 8842 CMP R0,R1
\ 00000090 0BD1 BNE.N ??UsartRXD_5
120 {
121 USART_ITConfig(USART1,USART_IT_RXNE,DISABLE);
\ 00000092 0022 MOVS R2,#+0
\ 00000094 .... LDR.N R1,??DataTable40 ;; 0x525
\ 00000096 .... LDR.N R0,??DataTable36 ;; 0x40013800
\ 00000098 ........ BL USART_ITConfig
122 Fifo->Timer=Fifo->PushIndx=0;
\ 0000009C 0020 MOVS R0,#+0
\ 0000009E 2080 STRH R0,[R4, #+0]
\ 000000A0 2071 STRB R0,[R4, #+4]
123 Fifo->UsartStatus=1;
\ 000000A2 0120 MOVS R0,#+1
\ 000000A4 6071 STRB R0,[R4, #+5]
124 return TRUE;
\ 000000A6 0120 MOVS R0,#+1
\ 000000A8 11E0 B.N ??UsartRXD_2
125 }
126 Fifo->Timer=0,Fifo->PushIndx=0;//USART_ITConfig(USART1,USART_IT_RXNE,ENABLE);
\ ??UsartRXD_5:
\ 000000AA 0020 MOVS R0,#+0
\ 000000AC 2071 STRB R0,[R4, #+4]
\ 000000AE 0020 MOVS R0,#+0
\ 000000B0 2080 STRH R0,[R4, #+0]
\ 000000B2 0BE0 B.N ??UsartRXD_7
127 }else
128 if(Fifo->Timer>=C_FifoRxd)
\ ??UsartRXD_3:
\ 000000B4 2079 LDRB R0,[R4, #+4]
\ 000000B6 0328 CMP R0,#+3
\ 000000B8 08D3 BCC.N ??UsartRXD_7
129 {
130 Fifo->Timer=0,Fifo->PushIndx=0;//没收到数据
\ 000000BA 0020 MOVS R0,#+0
\ 000000BC 2071 STRB R0,[R4, #+4]
\ 000000BE 0020 MOVS R0,#+0
\ 000000C0 2080 STRH R0,[R4, #+0]
131
132 USART_ITConfig(USART1,USART_IT_RXNE,ENABLE);//接收非空使能
\ 000000C2 0122 MOVS R2,#+1
\ 000000C4 .... LDR.N R1,??DataTable40 ;; 0x525
\ 000000C6 .... LDR.N R0,??DataTable36 ;; 0x40013800
\ 000000C8 ........ BL USART_ITConfig
133
134 }
135
136 return FALSE;
\ ??UsartRXD_7:
\ 000000CC 0020 MOVS R0,#+0
\ ??UsartRXD_2:
\ 000000CE 01B0 ADD SP,SP,#+4
\ 000000D0 F0BD POP {R4-R7,PC} ;; return
\ 000000D2 00BF Nop
\ ??UsartRXD_6:
\ 000000D4 ........ DC32 _YT
137 }
138
\ In section .XML, align 4, keep-with-next
139 Boolean UsartTXD(pUartFifo_t TFifo,pUartFifo_t RFifo,Int16U *pos)
140 {
\ UsartTXD:
\ 00000000 F1B5 PUSH {R0,R4-R7,LR}
\ 00000002 0400 MOVS R4,R0
\ 00000004 0D00 MOVS R5,R1
\ 00000006 1700 MOVS R7,R2
141 Int16U a,b;
142 //RFifo->Buffer[5]=10,RFifo->Buffer[3]=0,RFifo->Buffer[1]=3;
143 #if 1
144 if((RFifo->UsartStatus==0)||(RFifo->Buffer[C_RX_ADDR]!=*pos))
\ 00000008 6879 LDRB R0,[R5, #+5]
\ 0000000A 0028 CMP R0,#+0
\ 0000000C 04D0 BEQ.N ??UsartTXD_0
\ 0000000E A879 LDRB R0,[R5, #+6]
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -