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

📄 stm32f10x_i2c.s

📁 完成数据的采集
💻 S
📖 第 1 页 / 共 2 页
字号:
///////////////////////////////////////////////////////////////////////////////
//                                                                            /
//                                                      30/Jul/2008  14:37:35 /
// 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:\library\src\stm32f10x_i2c.c                          /
//    Command line =  E:\library\src\stm32f10x_i2c.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\stm32f10x_i2c.s              /
//                                                                            /
//                                                                            /
///////////////////////////////////////////////////////////////////////////////

        NAME stm32f10x_i2c

        EXTERN RCC_APB1PeriphResetCmd
        EXTERN RCC_GetClocksFreq

        PUBLIC I2C_ARPCmd
        PUBLIC I2C_AcknowledgeConfig
        PUBLIC I2C_CalculatePEC
        PUBLIC I2C_CheckEvent
        PUBLIC I2C_ClearFlag
        PUBLIC I2C_ClearITPendingBit
        PUBLIC I2C_Cmd
        PUBLIC I2C_DMACmd
        PUBLIC I2C_DMALastTransferCmd
        PUBLIC I2C_DeInit
        PUBLIC I2C_DualAddressCmd
        PUBLIC I2C_FastModeDutyCycleConfig
        PUBLIC I2C_GeneralCallCmd
        PUBLIC I2C_GenerateSTART
        PUBLIC I2C_GenerateSTOP
        PUBLIC I2C_GetFlagStatus
        PUBLIC I2C_GetITStatus
        PUBLIC I2C_GetLastEvent
        PUBLIC I2C_GetPEC
        PUBLIC I2C_ITConfig
        PUBLIC I2C_Init
        PUBLIC I2C_OwnAddress2Config
        PUBLIC I2C_PECPositionConfig
        PUBLIC I2C_ReadRegister
        PUBLIC I2C_ReceiveData
        PUBLIC I2C_SMBusAlertConfig
        PUBLIC I2C_Send7bitAddress
        PUBLIC I2C_SendData
        PUBLIC I2C_SoftwareResetCmd
        PUBLIC I2C_StretchClockCmd
        PUBLIC I2C_StructInit
        PUBLIC I2C_TransmitPEC


        SECTION `.XML`:CODE:NOROOT(2)
        THUMB
I2C_DeInit:
        PUSH     {R4,LR}
        MOVS     R4,R0
        MOVS     R0,R4
        LDR.N    R1,??I2C_DeInit_0  ;; 0x40005400
        SUBS     R0,R0,R1
        BEQ.N    ??I2C_DeInit_1
        MOVS     R1,#+1024
        SUBS     R0,R0,R1
        BEQ.N    ??I2C_DeInit_2
        B.N      ??I2C_DeInit_3
??I2C_DeInit_1:
        MOVS     R1,#+1
        MOVS     R0,#+2097152
        BL       RCC_APB1PeriphResetCmd
        MOVS     R1,#+0
        MOVS     R0,#+2097152
        BL       RCC_APB1PeriphResetCmd
        B.N      ??I2C_DeInit_3
??I2C_DeInit_2:
        MOVS     R1,#+1
        MOVS     R0,#+4194304
        BL       RCC_APB1PeriphResetCmd
        MOVS     R1,#+0
        MOVS     R0,#+4194304
        BL       RCC_APB1PeriphResetCmd
??I2C_DeInit_3:
        POP      {R4,PC}          ;; return
        Nop      
        DATA
??I2C_DeInit_0:
        DC32     0x40005400

        SECTION `.XML`:CODE:NOROOT(2)
        THUMB
I2C_Init:
        PUSH     {R4-R7,LR}
        SUB      SP,SP,#+28
        MOVS     R4,R0
        MOVS     R5,R1
        MOVS     R0,#+0
        MOVS     R7,R0
        MOVS     R0,#+0
        STRH     R0,[SP, #+4]
        MOVS     R0,#+4
        MOVS     R6,R0
        LDR.N    R0,??I2C_Init_0  ;; 0xb71b00
        STR      R0,[SP, #+0]
        LDRH     R0,[R4, #+4]
        MOVS     R7,R0
        MOVS     R0,R7
        LDR.N    R7,??I2C_Init_0+0x4  ;; 0xffc0
        ANDS     R7,R7,R0
        ADD      R0,SP,#+8
        BL       RCC_GetClocksFreq
        LDR      R0,[SP, #+16]
        STR      R0,[SP, #+0]
        LDR      R0,[SP, #+0]
        LDR.N    R1,??I2C_Init_0+0x8  ;; 0xf4240
        UDIV     R0,R0,R1
        STRH     R0,[SP, #+4]
        MOVS     R0,R7
        LDRH     R7,[SP, #+4]
        ORRS     R7,R7,R0
        STRH     R7,[R4, #+4]
        MOVS     R1,#+0
        MOVS     R0,R4
        BL       I2C_Cmd
        MOVS     R0,#+0
        MOVS     R7,R0
        LDR      R0,[R5, #+12]
        LDR.N    R1,??I2C_Init_0+0xC  ;; 0x186a1
        CMP      R0,R1
        BCS.N    ??I2C_Init_1
        LDR      R0,[SP, #+0]
        LDR      R1,[R5, #+12]
        LSLS     R1,R1,#+1
        UDIV     R0,R0,R1
        MOVS     R6,R0
        UXTH     R6,R6            ;; ZeroExtS R6,R6,#+16,#+16
        CMP      R6,#+4
        BCS.N    ??I2C_Init_2
        MOVS     R0,#+4
        MOVS     R6,R0
??I2C_Init_2:
        ORRS     R7,R7,R6
        LDRH     R0,[SP, #+4]
        ADDS     R0,R0,#+1
        STRH     R0,[R4, #+32]
        B.N      ??I2C_Init_3
??I2C_Init_1:
        LDRH     R0,[R5, #+2]
        LDR.N    R1,??DataTable1  ;; 0xbfff
        CMP      R0,R1
        BNE.N    ??I2C_Init_4
        LDR      R0,[SP, #+0]
        LDR      R1,[R5, #+12]
        MOVS     R2,#+3
        MULS     R1,R2,R1
        UDIV     R0,R0,R1
        MOVS     R6,R0
        B.N      ??I2C_Init_5
??I2C_Init_4:
        LDR      R0,[SP, #+0]
        LDR      R1,[R5, #+12]
        MOVS     R2,#+25
        MULS     R1,R2,R1
        UDIV     R0,R0,R1
        MOVS     R6,R0
        ORRS     R6,R6,#0x4000
??I2C_Init_5:
        LSLS     R0,R6,#+20
        BNE.N    ??I2C_Init_6
        ORRS     R6,R6,#0x1
??I2C_Init_6:
        MOVS     R0,R7
        ORRS     R7,R6,#0x8000
        ORRS     R7,R7,R0
        LDRH     R0,[SP, #+4]
        MOVS     R1,#+300
        MULS     R0,R1,R0
        MOVS     R1,#+1000
        SDIV     R0,R0,R1
        ADDS     R0,R0,#+1
        STRH     R0,[R4, #+32]
??I2C_Init_3:
        STRH     R7,[R4, #+28]
        MOVS     R1,#+1
        MOVS     R0,R4
        BL       I2C_Cmd
        LDRH     R0,[R4, #+0]
        MOVS     R7,R0
        MOVS     R0,R7
        LDR.N    R7,??I2C_Init_0+0x10  ;; 0xfbf5
        ANDS     R7,R7,R0
        MOVS     R1,R7
        LDRH     R0,[R5, #+0]
        LDRH     R7,[R5, #+6]
        ORRS     R7,R7,R0
        ORRS     R7,R7,R1
        STRH     R7,[R4, #+0]
        LDRH     R0,[R5, #+8]
        LDRH     R1,[R5, #+4]
        ORRS     R1,R1,R0
        STRH     R1,[R4, #+8]
        ADD      SP,SP,#+28
        POP      {R4-R7,PC}       ;; return
        Nop      
        DATA
??I2C_Init_0:
        DC32     0xb71b00
        DC32     0xffc0
        DC32     0xf4240
        DC32     0x186a1
        DC32     0xfbf5

        SECTION `.XML`:CODE:NOROOT(2)
        THUMB
I2C_StructInit:
        MOVS     R1,#+0
        STRH     R1,[R0, #+0]
        LDR.N    R1,??DataTable1  ;; 0xbfff
        STRH     R1,[R0, #+2]
        MOVS     R1,#+0
        STRH     R1,[R0, #+4]
        MOVS     R1,#+0
        STRH     R1,[R0, #+6]
        MOVS     R1,#+16384
        STRH     R1,[R0, #+8]
        LDR.N    R1,??I2C_StructInit_0  ;; 0x1388
        STR      R1,[R0, #+12]
        BX       LR               ;; return
        DATA
??I2C_StructInit_0:
        DC32     0x1388

        SECTION `.XML`:CODE:NOROOT(2)
        DATA
??DataTable1:
        DC32     0xbfff

        SECTION `.XML`:CODE:NOROOT(2)
        THUMB
I2C_Cmd:
        UXTB     R1,R1            ;; ZeroExtS R1,R1,#+24,#+24
        CMP      R1,#+0
        BEQ.N    ??I2C_Cmd_0
        LDRH     R2,[R0, #+0]
        ORRS     R2,R2,#0x1
        STRH     R2,[R0, #+0]
        B.N      ??I2C_Cmd_1
??I2C_Cmd_0:
        LDRH     R2,[R0, #+0]
        LDR.N    R3,??DataTable5  ;; 0xfffe
        ANDS     R3,R3,R2
        STRH     R3,[R0, #+0]
??I2C_Cmd_1:
        BX       LR               ;; return

        SECTION `.XML`:CODE:NOROOT(2)
        THUMB
I2C_DMACmd:
        UXTB     R1,R1            ;; ZeroExtS R1,R1,#+24,#+24
        CMP      R1,#+0
        BEQ.N    ??I2C_DMACmd_0
        LDRH     R2,[R0, #+4]
        ORRS     R2,R2,#0x800
        STRH     R2,[R0, #+4]
        B.N      ??I2C_DMACmd_1
??I2C_DMACmd_0:
        LDRH     R2,[R0, #+4]
        LDR.N    R3,??DataTable7  ;; 0xf7ff
        ANDS     R3,R3,R2
        STRH     R3,[R0, #+4]
??I2C_DMACmd_1:
        BX       LR               ;; return

        SECTION `.XML`:CODE:NOROOT(2)
        THUMB
I2C_DMALastTransferCmd:
        UXTB     R1,R1            ;; ZeroExtS R1,R1,#+24,#+24
        CMP      R1,#+0
        BEQ.N    ??I2C_DMALastTransferCmd_0
        LDRH     R2,[R0, #+4]
        ORRS     R2,R2,#0x1000
        STRH     R2,[R0, #+4]
        B.N      ??I2C_DMALastTransferCmd_1
??I2C_DMALastTransferCmd_0:
        LDRH     R2,[R0, #+4]
        LDR.N    R3,??DataTable6  ;; 0xefff
        ANDS     R3,R3,R2
        STRH     R3,[R0, #+4]
??I2C_DMALastTransferCmd_1:
        BX       LR               ;; return

        SECTION `.XML`:CODE:NOROOT(2)
        THUMB
I2C_GenerateSTART:
        UXTB     R1,R1            ;; ZeroExtS R1,R1,#+24,#+24
        CMP      R1,#+0
        BEQ.N    ??I2C_GenerateSTART_0
        LDRH     R2,[R0, #+0]
        ORRS     R2,R2,#0x100
        STRH     R2,[R0, #+0]
        B.N      ??I2C_GenerateSTART_1
??I2C_GenerateSTART_0:
        LDRH     R2,[R0, #+0]
        LDR.N    R3,??I2C_GenerateSTART_2  ;; 0xfeff
        ANDS     R3,R3,R2
        STRH     R3,[R0, #+0]
??I2C_GenerateSTART_1:
        BX       LR               ;; return
        Nop      
        DATA
??I2C_GenerateSTART_2:
        DC32     0xfeff

        SECTION `.XML`:CODE:NOROOT(2)
        THUMB
I2C_GenerateSTOP:
        UXTB     R1,R1            ;; ZeroExtS R1,R1,#+24,#+24
        CMP      R1,#+0
        BEQ.N    ??I2C_GenerateSTOP_0
        LDRH     R2,[R0, #+0]
        ORRS     R2,R2,#0x200
        STRH     R2,[R0, #+0]
        B.N      ??I2C_GenerateSTOP_1
??I2C_GenerateSTOP_0:
        LDRH     R2,[R0, #+0]
        LDR.N    R3,??I2C_GenerateSTOP_2  ;; 0xfdff
        ANDS     R3,R3,R2
        STRH     R3,[R0, #+0]
??I2C_GenerateSTOP_1:
        BX       LR               ;; return
        Nop      
        DATA
??I2C_GenerateSTOP_2:
        DC32     0xfdff

        SECTION `.XML`:CODE:NOROOT(2)
        THUMB
I2C_AcknowledgeConfig:
        UXTB     R1,R1            ;; ZeroExtS R1,R1,#+24,#+24
        CMP      R1,#+0
        BEQ.N    ??I2C_AcknowledgeConfig_0
        LDRH     R2,[R0, #+0]
        ORRS     R2,R2,#0x400
        STRH     R2,[R0, #+0]
        B.N      ??I2C_AcknowledgeConfig_1
??I2C_AcknowledgeConfig_0:
        LDRH     R2,[R0, #+0]
        LDR.N    R3,??I2C_AcknowledgeConfig_2  ;; 0xfbff
        ANDS     R3,R3,R2
        STRH     R3,[R0, #+0]
??I2C_AcknowledgeConfig_1:
        BX       LR               ;; return
        Nop      
        DATA
??I2C_AcknowledgeConfig_2:
        DC32     0xfbff

        SECTION `.XML`:CODE:NOROOT(2)
        THUMB
I2C_OwnAddress2Config:
        MOVS     R3,#+0
        MOVS     R2,R3
        LDRH     R3,[R0, #+12]
        MOVS     R2,R3
        MOVS     R3,R2
        LDR.N    R2,??I2C_OwnAddress2Config_0  ;; 0xff01
        ANDS     R2,R2,R3
        MOVS     R3,R2
        UXTB     R1,R1            ;; ZeroExtS R1,R1,#+24,#+24
        ANDS     R2,R1,#0xFE
        ORRS     R2,R2,R3
        STRH     R2,[R0, #+12]
        BX       LR               ;; return
        DATA
??I2C_OwnAddress2Config_0:
        DC32     0xff01

        SECTION `.XML`:CODE:NOROOT(2)
        THUMB
I2C_DualAddressCmd:
        UXTB     R1,R1            ;; ZeroExtS R1,R1,#+24,#+24
        CMP      R1,#+0
        BEQ.N    ??I2C_DualAddressCmd_0
        LDRH     R2,[R0, #+12]
        ORRS     R2,R2,#0x1
        STRH     R2,[R0, #+12]
        B.N      ??I2C_DualAddressCmd_1
??I2C_DualAddressCmd_0:
        LDRH     R2,[R0, #+12]
        LDR.N    R3,??DataTable5  ;; 0xfffe
        ANDS     R3,R3,R2
        STRH     R3,[R0, #+12]
??I2C_DualAddressCmd_1:
        BX       LR               ;; return

        SECTION `.XML`:CODE:NOROOT(2)
        DATA
??DataTable5:
        DC32     0xfffe

        SECTION `.XML`:CODE:NOROOT(2)
        THUMB
I2C_GeneralCallCmd:
        UXTB     R1,R1            ;; ZeroExtS R1,R1,#+24,#+24
        CMP      R1,#+0
        BEQ.N    ??I2C_GeneralCallCmd_0
        LDRH     R2,[R0, #+0]
        ORRS     R2,R2,#0x40
        STRH     R2,[R0, #+0]
        B.N      ??I2C_GeneralCallCmd_1
??I2C_GeneralCallCmd_0:
        LDRH     R2,[R0, #+0]
        LDR.N    R3,??I2C_GeneralCallCmd_2  ;; 0xffbf
        ANDS     R3,R3,R2
        STRH     R3,[R0, #+0]
??I2C_GeneralCallCmd_1:
        BX       LR               ;; return
        Nop      
        DATA
??I2C_GeneralCallCmd_2:
        DC32     0xffbf

        SECTION `.XML`:CODE:NOROOT(2)
        THUMB
I2C_ITConfig:
        UXTB     R2,R2            ;; ZeroExtS R2,R2,#+24,#+24
        CMP      R2,#+0
        BEQ.N    ??I2C_ITConfig_0
        LDRH     R3,[R0, #+4]
        ORRS     R3,R3,R1
        STRH     R3,[R0, #+4]
        B.N      ??I2C_ITConfig_1
??I2C_ITConfig_0:
        LDRH     R3,[R0, #+4]
        BICS     R3,R3,R1
        STRH     R3,[R0, #+4]
??I2C_ITConfig_1:
        BX       LR               ;; return

        SECTION `.XML`:CODE:NOROOT(2)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -