⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 uart.s

📁 完成数据的采集
💻 S
📖 第 1 页 / 共 2 页
字号:
///////////////////////////////////////////////////////////////////////////////
//                                                                            /
//                                                      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 + -