📄 uart.s
字号:
///////////////////////////////////////////////////////////////////////////////
// /
// 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.s /
// /
// /
///////////////////////////////////////////////////////////////////////////////
NAME uart
EXTERN GPIO_Init
EXTERN GPIO_PinRemapConfig
EXTERN NVIC_Init
EXTERN RCC_APB2PeriphClockCmd
EXTERN RCC_APB2PeriphResetCmd
EXTERN USART_ClearFlag
EXTERN USART_Cmd
EXTERN USART_DeInit
EXTERN USART_GetFlagStatus
EXTERN USART_GetITStatus
EXTERN USART_ITConfig
EXTERN USART_Init
EXTERN USART_ReceiveData
EXTERN Uart1LineEvents
EXTERN Uart1RxFifo
EXTERN Uart1TxFifo
EXTERN _YT
EXTERN cal_crc
EXTERN pUart1RxFifo
EXTERN pUart1TxFifo
PUBLIC BAUD_TAB
PUBLIC FifoPop
PUBLIC FifoPush
PUBLIC Uart1Init
PUBLIC Uart1Isr
PUBLIC UsartRXD
PUBLIC UsartTXD
SECTION `.rodata`:CONST:NOROOT(2)
BAUD_TAB:
DATA
DC16 19450, 9600, 4750
DC8 0, 0
SECTION `.XML`:CODE:NOROOT(2)
THUMB
FifoPush:
PUSH {R0,R1,R4-R6,LR}
MOVS R4,R0
MOVS R5,R1
MOVS R0,#+0
STRB R0,[R4, #+4]
MOVS R0,#+0
STRH R0,[R4, #+2]
LDRH R0,[R4, #+0]
CMP R0,#+20
BCS.N ??FifoPush_0
LDRH R0,[R4, #+0]
STR R0,[SP, #+0]
LDR R6,[SP, #+0]
LDR.N R0,??DataTable36 ;; 0x40013800
BL USART_ReceiveData
ADDS R1,R4,R6
STRB R0,[R1, #+6]
LDRH R0,[R4, #+0]
ADDS R0,R0,#+1
STRH R0,[R4, #+0]
MOVS R0,#+0
B.N ??FifoPush_1
??FifoPush_0:
LDR.N R0,??DataTable36 ;; 0x40013800
BL USART_ReceiveData
STR R0,[SP, #+0]
MOVS R0,#+1
??FifoPush_1:
ADD SP,SP,#+8
POP {R4-R6,PC} ;; return
SECTION `.XML`:CODE:NOROOT(2)
THUMB
FifoPop:
SUB SP,SP,#+8
MOVS R2,R0
LDRH R0,[R2, #+0]
ADDS R0,R0,#+1
LDRH R3,[R2, #+2]
CMP R0,R3
BLT.N ??FifoPop_0
LDRH R0,[R2, #+2]
STR R0,[SP, #+0]
LDR R0,[SP, #+0]
ADDS R0,R2,R0
LDRB R0,[R0, #+6]
STRH R0,[R1, #+4]
LDRH R0,[R2, #+2]
ADDS R0,R0,#+1
STRH R0,[R2, #+2]
MOVS R0,#+1
B.N ??FifoPop_1
??FifoPop_0:
MOVS R0,#+0
??FifoPop_1:
ADD SP,SP,#+8
BX LR ;; return
SECTION `.XML`:CODE:NOROOT(2)
THUMB
Uart1Isr:
PUSH {R0,LR}
MOVS R1,#+8
LDR.N R0,??DataTable36 ;; 0x40013800
BL USART_GetFlagStatus
CMP R0,#+0
BEQ.N ??Uart1Isr_0
MOVS R1,#+8
LDR.N R0,??DataTable36 ;; 0x40013800
BL USART_ClearFlag
LDR.N R0,??Uart1Isr_1 ;; Uart1LineEvents
LDR R0,[R0, #+0]
ORRS R0,R0,#0x2
LDR.N R1,??Uart1Isr_1 ;; Uart1LineEvents
STR R0,[R1, #+0]
??Uart1Isr_0:
MOVS R1,#+2
LDR.N R0,??DataTable36 ;; 0x40013800
BL USART_GetFlagStatus
CMP R0,#+0
BEQ.N ??Uart1Isr_2
MOVS R1,#+2
LDR.N R0,??DataTable36 ;; 0x40013800
BL USART_ClearFlag
LDR.N R0,??Uart1Isr_1 ;; Uart1LineEvents
LDR R0,[R0, #+0]
ORRS R0,R0,#0x8
LDR.N R1,??Uart1Isr_1 ;; Uart1LineEvents
STR R0,[R1, #+0]
??Uart1Isr_2:
MOVS R1,#+4
LDR.N R0,??DataTable36 ;; 0x40013800
BL USART_GetFlagStatus
CMP R0,#+0
BEQ.N ??Uart1Isr_3
MOVS R1,#+4
LDR.N R0,??DataTable36 ;; 0x40013800
BL USART_ClearFlag
LDR.N R0,??Uart1Isr_1 ;; Uart1LineEvents
LDR R0,[R0, #+0]
ORRS R0,R0,#0x8
LDR.N R1,??Uart1Isr_1 ;; Uart1LineEvents
STR R0,[R1, #+0]
??Uart1Isr_3:
MOVS R1,#+1
LDR.N R0,??DataTable36 ;; 0x40013800
BL USART_GetFlagStatus
CMP R0,#+0
BEQ.N ??Uart1Isr_4
MOVS R1,#+1
LDR.N R0,??DataTable36 ;; 0x40013800
BL USART_ClearFlag
LDR.N R0,??Uart1Isr_1 ;; Uart1LineEvents
LDR R0,[R0, #+0]
ORRS R0,R0,#0x4
LDR.N R1,??Uart1Isr_1 ;; Uart1LineEvents
STR R0,[R1, #+0]
??Uart1Isr_4:
MOVS R1,#+32
LDR.N R0,??DataTable36 ;; 0x40013800
BL USART_GetFlagStatus
CMP R0,#+0
BEQ.N ??Uart1Isr_5
LDR.N R1,??DataTable36 ;; 0x40013800
LDR.N R0,??DataTable26 ;; pUart1RxFifo
LDR R0,[R0, #+0]
BL FifoPush
STR R0,[SP, #+0]
??Uart1Isr_5:
MOVS R1,#+128
LDR.N R0,??DataTable36 ;; 0x40013800
BL USART_GetFlagStatus
CMP R0,#+0
BEQ.N ??Uart1Isr_6
LDR.N R1,??DataTable53 ;; 0x727
LDR.N R0,??DataTable36 ;; 0x40013800
BL USART_GetITStatus
CMP R0,#+1
BNE.N ??Uart1Isr_6
MOVS R1,#+128
LDR.N R0,??DataTable36 ;; 0x40013800
BL USART_ClearFlag
LDR.N R0,??DataTable52 ;; 0x4001080c
LDR R0,[R0, #+0]
MOVS R1,#+8
BICS R0,R0,R1
LDR.N R1,??DataTable52 ;; 0x4001080c
STR R0,[R1, #+0]
LDR.N R1,??DataTable36 ;; 0x40013800
LDR.N R0,??DataTable50 ;; pUart1TxFifo
LDR R0,[R0, #+0]
BL FifoPop
CMP R0,#+0
BNE.N ??Uart1Isr_6
MOVS R2,#+0
LDR.N R1,??DataTable53 ;; 0x727
LDR.N R0,??DataTable36 ;; 0x40013800
BL USART_ITConfig
LDR.N R0,??DataTable52 ;; 0x4001080c
LDR R0,[R0, #+0]
ORRS R0,R0,#0x8
LDR.N R1,??DataTable52 ;; 0x4001080c
STR R0,[R1, #+0]
MOVS R0,#+0
LDR.N R1,??DataTable50 ;; pUart1TxFifo
LDR R1,[R1, #+0]
STRB R0,[R1, #+5]
LDR.N R1,??DataTable26 ;; pUart1RxFifo
LDR R1,[R1, #+0]
STRB R0,[R1, #+5]
MOVS R2,#+1
LDR.N R1,??DataTable40 ;; 0x525
LDR.N R0,??DataTable36 ;; 0x40013800
BL USART_ITConfig
??Uart1Isr_6:
ADD SP,SP,#+4
POP {PC} ;; return
Nop
DATA
??Uart1Isr_1:
DC32 Uart1LineEvents
SECTION `.XML`:CODE:NOROOT(2)
DATA
??DataTable26:
DC32 pUart1RxFifo
SECTION `.XML`:CODE:NOROOT(2)
THUMB
UsartRXD:
PUSH {R0,R4-R7,LR}
MOVS R4,R0
MOVS R5,R1
MOVS R0,#+0
MOVS R6,R0
LDRB R0,[R4, #+5]
CMP R0,#+0
BEQ.N ??UsartRXD_0
MOVS R2,#+0
LDR.N R1,??DataTable40 ;; 0x525
LDR.N R0,??DataTable36 ;; 0x40013800
BL USART_ITConfig
LDRB R0,[R5, #+4]
ADDS R0,R0,#+1
STRB R0,[R5, #+4]
UXTB R0,R0 ;; ZeroExtS R0,R0,#+24,#+24
CMP R0,#+250
BCC.N ??UsartRXD_1
MOVS R0,#+0
STRB R0,[R4, #+5]
??UsartRXD_1:
MOVS R0,#+0
B.N ??UsartRXD_2
??UsartRXD_0:
LDR.N R0,??DataTable52 ;; 0x4001080c
LDR R0,[R0, #+0]
ORRS R0,R0,#0x8
LDR.N R1,??DataTable52 ;; 0x4001080c
STR R0,[R1, #+0]
MOVS R0,#+0
STRB R0,[R5, #+4]
LDRB R0,[R4, #+4]
ADDS R0,R0,#+1
STRB R0,[R4, #+4]
LDRH R0,[R4, #+0]
CMP R0,#+0
BEQ.N ??UsartRXD_3
LDRB R0,[R4, #+4]
CMP R0,#+3
BCC.N ??UsartRXD_3
LDRH R0,[R4, #+0]
CMP R0,#+2
BCC.N ??UsartRXD_4
LDRH R0,[R4, #+0]
SUBS R0,R0,#+2
MOVS R6,R0
??UsartRXD_4:
UXTH R6,R6 ;; ZeroExtS R6,R6,#+16,#+16
ADDS R0,R4,R6
LDRB R0,[R0, #+7]
MOVS R7,R0
UXTH R7,R7 ;; ZeroExtS R7,R7,#+16,#+16
LSLS R7,R7,#+8
UXTH R6,R6 ;; ZeroExtS R6,R6,#+16,#+16
ADDS R0,R4,R6
LDRB R0,[R0, #+6]
ADDS R7,R7,R0
MOVS R1,R6
UXTB R1,R1 ;; ZeroExtS R1,R1,#+24,#+24
MOVS R0,R4
ADDS R0,R0,#+6
BL cal_crc
MOVS R6,R0
UXTH R6,R6 ;; ZeroExtS R6,R6,#+16,#+16
UXTH R7,R7 ;; ZeroExtS R7,R7,#+16,#+16
CMP R6,R7
BNE.N ??UsartRXD_5
LDRB R0,[R4, #+6]
LDR.N R1,??UsartRXD_6 ;; _YT
LDRH R1,[R1, #+0]
UXTH R0,R0 ;; ZeroExtS R0,R0,#+16,#+16
CMP R0,R1
BNE.N ??UsartRXD_5
MOVS R2,#+0
LDR.N R1,??DataTable40 ;; 0x525
LDR.N R0,??DataTable36 ;; 0x40013800
BL USART_ITConfig
MOVS R0,#+0
STRH R0,[R4, #+0]
STRB R0,[R4, #+4]
MOVS R0,#+1
STRB R0,[R4, #+5]
MOVS R0,#+1
B.N ??UsartRXD_2
??UsartRXD_5:
MOVS R0,#+0
STRB R0,[R4, #+4]
MOVS R0,#+0
STRH R0,[R4, #+0]
B.N ??UsartRXD_7
??UsartRXD_3:
LDRB R0,[R4, #+4]
CMP R0,#+3
BCC.N ??UsartRXD_7
MOVS R0,#+0
STRB R0,[R4, #+4]
MOVS R0,#+0
STRH R0,[R4, #+0]
MOVS R2,#+1
LDR.N R1,??DataTable40 ;; 0x525
LDR.N R0,??DataTable36 ;; 0x40013800
BL USART_ITConfig
??UsartRXD_7:
MOVS R0,#+0
??UsartRXD_2:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -