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

📄 stm32f10x_i2c.s79

📁 STM32利用正交编码器实现电机的控制
💻 S79
📖 第 1 页 / 共 4 页
字号:
//////////////////////////////////////////////////////////////////////////////
//                                                                           /
// IAR ARM ANSI C/C++ Compiler V4.42A/W32              15/May/2008  12:06:31 /
// Copyright 1999-2005 IAR Systems. All rights reserved.                     /
//                                                                           /
//    Cpu mode        =  thumb                                               /
//    Endian          =  little                                              /
//    Stack alignment =  4                                                   /
//    Source file     =  C:\David JIANG\ST MCU\Docs\STM32\AN_JIANG\TIM       /
//                       Encoder\example\FWLib\src\stm32f10x_i2c.c           /
//    Command line    =  "C:\David JIANG\ST MCU\Docs\STM32\AN_JIANG\TIM      /
//                       Encoder\example\FWLib\src\stm32f10x_i2c.c" -D       /
//                       VECT_TAB_FLASH -lcN "C:\David JIANG\ST              /
//                       MCU\Docs\STM32\AN_JIANG\TIM                         /
//                       Encoder\example\project\EWARM\BOOT_FLASH\List\"     /
//                       -lb "C:\David JIANG\ST MCU\Docs\STM32\AN_JIANG\TIM  /
//                       Encoder\example\project\EWARM\BOOT_FLASH\List\" -o  /
//                       "C:\David JIANG\ST MCU\Docs\STM32\AN_JIANG\TIM      /
//                       Encoder\example\project\EWARM\BOOT_FLASH\Obj\" -z3  /
//                       --no_cse --no_unroll --no_inline --no_code_motion   /
//                       --no_tbaa --no_clustering --no_scheduling --debug   /
//                       --cpu_mode thumb --endian little --cpu cortex-M3    /
//                       --stack_align 4 --require_prototypes --fpu None     /
//                       --dlib_config "C:\Program Files\IAR                 /
//                       Systems\Embedded Workbench                          /
//                       4.0\arm\LIB\dl7mptnnl8f.h" -I "C:\David JIANG\ST    /
//                       MCU\Docs\STM32\AN_JIANG\TIM                         /
//                       Encoder\example\project\EWARM\" -I "C:\David        /
//                       JIANG\ST MCU\Docs\STM32\AN_JIANG\TIM                /
//                       Encoder\example\project\EWARM\..\include\" -I       /
//                       "C:\David JIANG\ST MCU\Docs\STM32\AN_JIANG\TIM      /
//                       Encoder\example\project\EWARM\..\..\FWLib\inc\" -I  /
//                       "C:\Program Files\IAR Systems\Embedded Workbench    /
//                       4.0\arm\INC\"                                       /
//    List file       =  C:\David JIANG\ST MCU\Docs\STM32\AN_JIANG\TIM       /
//                       Encoder\example\project\EWARM\BOOT_FLASH\List\stm32 /
//                       f10x_i2c.s79                                        /
//                                                                           /
//                                                                           /
//////////////////////////////////////////////////////////////////////////////

        NAME stm32f10x_i2c

        RSEG CSTACK:DATA:NOROOT(2)

??DataTable0 EQU 0
??DataTable1 EQU 0
??DataTable10 EQU 0
??DataTable11 EQU 0
??DataTable12 EQU 0
??DataTable13 EQU 0
??DataTable14 EQU 0
??DataTable15 EQU 0
??DataTable16 EQU 0
??DataTable17 EQU 0
??DataTable2 EQU 0
??DataTable20 EQU 0
??DataTable21 EQU 0
??DataTable22 EQU 0
??DataTable23 EQU 0
??DataTable24 EQU 0
??DataTable25 EQU 0
??DataTable26 EQU 0
??DataTable27 EQU 0
??DataTable3 EQU 0
??DataTable30 EQU 0
??DataTable31 EQU 0
??DataTable32 EQU 0
??DataTable33 EQU 0
??DataTable34 EQU 0
??DataTable35 EQU 0
??DataTable38 EQU 0
??DataTable39 EQU 0
??DataTable4 EQU 0
??DataTable40 EQU 0
??DataTable41 EQU 0
??DataTable42 EQU 0
??DataTable43 EQU 0
??DataTable44 EQU 0
??DataTable45 EQU 0
??DataTable46 EQU 0
??DataTable47 EQU 0
??DataTable48 EQU 0
??DataTable49 EQU 0
??DataTable5 EQU 0
??DataTable50 EQU 0
??DataTable51 EQU 0
??DataTable52 EQU 0
??DataTable53 EQU 0
??DataTable54 EQU 0
??DataTable55 EQU 0
??DataTable56 EQU 0
??DataTable57 EQU 0
??DataTable58 EQU 0
??DataTable59 EQU 0
??DataTable6 EQU 0
??DataTable60 EQU 0
??DataTable61 EQU 0
??DataTable62 EQU 0
??DataTable63 EQU 0
??DataTable64 EQU 0
??DataTable65 EQU 0
??DataTable66 EQU 0
??DataTable67 EQU 0
??DataTable68 EQU 0
??DataTable69 EQU 0
??DataTable7 EQU 0
??DataTable70 EQU 0
??DataTable71 EQU 0
??DataTable72 EQU 0
??DataTable73 EQU 0
??DataTable9 EQU 0
        MULTWEAK ??RCC_APB1PeriphResetCmd??rT
        MULTWEAK ??RCC_GetClocksFreq??rT
        MULTWEAK ??assert_failed??rT
        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

RCC_APB1PeriphResetCmd SYMBOL "RCC_APB1PeriphResetCmd"
RCC_GetClocksFreq   SYMBOL "RCC_GetClocksFreq"
assert_failed       SYMBOL "assert_failed"
??RCC_APB1PeriphResetCmd??rT SYMBOL "??rT", RCC_APB1PeriphResetCmd
??RCC_GetClocksFreq??rT SYMBOL "??rT", RCC_GetClocksFreq
??assert_failed??rT SYMBOL "??rT", assert_failed

        EXTERN RCC_APB1PeriphResetCmd
        EXTERN RCC_GetClocksFreq
        EXTERN assert_failed


        RSEG CODE:CODE:NOROOT(2)
        THUMB
I2C_DeInit:
        PUSH     {LR}
        LDR.N    R1,??I2C_DeInit_0  ;; 0x40005400
        CMP      R0,R1
        BEQ.N    ??I2C_DeInit_1
        LDR.N    R1,??I2C_DeInit_0+0x4  ;; 0x40005800
        CMP      R0,R1
        BEQ.N    ??I2C_DeInit_2
        B.N      ??I2C_DeInit_3
??I2C_DeInit_1:
        MOVS     R1,#+1
        MOVS     R0,#+2097152
        _BLF     RCC_APB1PeriphResetCmd,??RCC_APB1PeriphResetCmd??rT
        MOVS     R1,#+0
        MOVS     R0,#+2097152
        _BLF     RCC_APB1PeriphResetCmd,??RCC_APB1PeriphResetCmd??rT
        B.N      ??I2C_DeInit_3
??I2C_DeInit_2:
        MOVS     R1,#+1
        MOVS     R0,#+4194304
        _BLF     RCC_APB1PeriphResetCmd,??RCC_APB1PeriphResetCmd??rT
        MOVS     R1,#+0
        MOVS     R0,#+4194304
        _BLF     RCC_APB1PeriphResetCmd,??RCC_APB1PeriphResetCmd??rT
??I2C_DeInit_3:
        POP      {PC}             ;; return
        DATA
??I2C_DeInit_0:
        DC32     0x40005400
        DC32     0x40005800

        RSEG CODE:CODE:NOROOT(2)
        THUMB
I2C_Init:
        PUSH     {R4-R8,LR}
        SUB      SP,SP,#+20
        MOV      R8,R0
        MOVS     R4,R1
        MOVS     R5,#+0
        MOVS     R6,#+0
        MOVS     R0,#+4
        LDR.N    R7,??I2C_Init_0  ;; 0xb71b00
        LDRH     R1,[R4, #+0]
        CMP      R1,#+0
        BEQ.N    ??I2C_Init_1
        LDRH     R0,[R4, #+0]
        CMP      R0,#+2
        BEQ.N    ??I2C_Init_1
        LDRH     R0,[R4, #+0]
        CMP      R0,#+10
        BEQ.N    ??I2C_Init_1
        MOVS     R1,#+156
        LDR.N    R0,??DataTable18  ;; `?<Constant "C:\\\\David JIANG\\\\ST MCU...">`
        _BLF     assert_failed,??assert_failed??rT
??I2C_Init_1:
        LDRH     R0,[R4, #+2]
        MOVS     R1,#+16384
        CMP      R0,R1
        BEQ.N    ??I2C_Init_2
        LDRH     R0,[R4, #+2]
        LDR.N    R1,??DataTable8  ;; 0xbfff
        CMP      R0,R1
        BEQ.N    ??I2C_Init_2
        MOVS     R1,#+157
        LDR.N    R0,??DataTable18  ;; `?<Constant "C:\\\\David JIANG\\\\ST MCU...">`
        _BLF     assert_failed,??assert_failed??rT
??I2C_Init_2:
        LDRH     R0,[R4, #+4]
        MOVS     R1,#+1024
        CMP      R0,R1
        BCC.N    ??I2C_Init_3
        MOVS     R1,#+158
        LDR.N    R0,??DataTable18  ;; `?<Constant "C:\\\\David JIANG\\\\ST MCU...">`
        _BLF     assert_failed,??assert_failed??rT
??I2C_Init_3:
        LDRH     R0,[R4, #+6]
        MOVS     R1,#+1024
        CMP      R0,R1
        BEQ.N    ??I2C_Init_4
        LDRH     R0,[R4, #+6]
        CMP      R0,#+0
        BEQ.N    ??I2C_Init_4
        MOVS     R1,#+159
        LDR.N    R0,??DataTable18  ;; `?<Constant "C:\\\\David JIANG\\\\ST MCU...">`
        _BLF     assert_failed,??assert_failed??rT
??I2C_Init_4:
        LDRH     R0,[R4, #+8]
        MOVS     R1,#+16384
        CMP      R0,R1
        BEQ.N    ??I2C_Init_5
        LDRH     R0,[R4, #+8]
        MOVS     R1,#+49152
        CMP      R0,R1
        BEQ.N    ??I2C_Init_5
        MOVS     R1,#+160
        LDR.N    R0,??DataTable18  ;; `?<Constant "C:\\\\David JIANG\\\\ST MCU...">`
        _BLF     assert_failed,??assert_failed??rT
??I2C_Init_5:
        LDR      R0,[R4, #+12]
        CMP      R0,#+0
        BEQ.N    ??I2C_Init_6
        LDR      R0,[R4, #+12]
        LDR.N    R1,??I2C_Init_0+0x4  ;; 0x61a81
        CMP      R0,R1
        BCC.N    ??I2C_Init_7
??I2C_Init_6:
        MOVS     R1,#+161
        LDR.N    R0,??DataTable18  ;; `?<Constant "C:\\\\David JIANG\\\\ST MCU...">`
        _BLF     assert_failed,??assert_failed??rT
??I2C_Init_7:
        LDRH     R5,[R8, #+4]
        MOVS     R0,R5
        LDR.N    R5,??I2C_Init_0+0x8  ;; 0xffc0
        ANDS     R5,R5,R0
        MOV      R0,SP
        _BLF     RCC_GetClocksFreq,??RCC_GetClocksFreq??rT
        LDR      R7,[SP, #+8]
        LDR.N    R0,??I2C_Init_0+0xC  ;; 0xf4240
        UDIV     R6,R7,R0
        ORRS     R5,R5,R6
        STRH     R5,[R8, #+4]
        MOVS     R1,#+0
        MOV      R0,R8
        BL       I2C_Cmd
        MOVS     R5,#+0
        LDR      R0,[R4, #+12]
        LDR.N    R1,??I2C_Init_0+0x10  ;; 0x186a1
        CMP      R0,R1
        BCS.N    ??I2C_Init_8
        LDR      R0,[R4, #+12]
        LSLS     R0,R0,#+1
        UDIV     R0,R7,R0
        LSLS     R0,R0,#+16       ;; ZeroExtS R0,R0,#+16,#+16
        LSRS     R0,R0,#+16
        CMP      R0,#+4
        BCS.N    ??I2C_Init_9
        MOVS     R0,#+4
??I2C_Init_9:
        MOVS     R1,R5
        MOVS     R5,R0
        ORRS     R5,R5,R1
        ADDS     R6,R6,#+1
        STRH     R6,[R8, #+32]
        B.N      ??I2C_Init_10
??I2C_Init_8:
        LDRH     R0,[R4, #+2]
        LDR.N    R1,??DataTable8  ;; 0xbfff
        CMP      R0,R1
        BNE.N    ??I2C_Init_11
        LDR      R0,[R4, #+12]
        MOVS     R1,#+3
        MULS     R0,R1,R0
        UDIV     R0,R7,R0
        B.N      ??I2C_Init_12
??I2C_Init_11:
        LDR      R0,[R4, #+12]
        MOVS     R1,#+25
        MULS     R0,R1,R0
        UDIV     R0,R7,R0
        ORRS     R0,R0,#0x4000
??I2C_Init_12:
        LSLS     R1,R0,#+20
        BNE.N    ??I2C_Init_13
        ORRS     R0,R0,#0x1
??I2C_Init_13:
        MOVS     R1,R5
        ORRS     R5,R0,#0x8000
        ORRS     R5,R5,R1
        LSLS     R6,R6,#+16       ;; ZeroExtS R6,R6,#+16,#+16
        LSRS     R6,R6,#+16
        MOVS     R0,#+300
        MULS     R6,R0,R6
        MOVS     R0,#+1000
        SDIV     R0,R6,R0
        ADDS     R0,R0,#+1
        STRH     R0,[R8, #+32]
??I2C_Init_10:
        STRH     R5,[R8, #+28]
        MOVS     R1,#+1
        MOV      R0,R8
        BL       I2C_Cmd
        LDRH     R5,[R8, #+0]
        MOVS     R0,R5
        LDR.N    R5,??I2C_Init_0+0x14  ;; 0xfbf5
        ANDS     R5,R5,R0
        MOVS     R1,R5
        LDRH     R0,[R4, #+0]
        LDRH     R5,[R4, #+6]
        ORRS     R5,R5,R0
        ORRS     R5,R5,R1
        STRH     R5,[R8, #+0]
        LDRH     R0,[R4, #+8]
        LDRH     R1,[R4, #+4]
        ORRS     R1,R1,R0
        STRH     R1,[R8, #+8]
        ADD      SP,SP,#+20
        POP      {R4-R8,PC}       ;; return
        DATA
??I2C_Init_0:
        DC32     0xb71b00
        DC32     0x61a81
        DC32     0xffc0
        DC32     0xf4240
        DC32     0x186a1
        DC32     0xfbf5

        RSEG CODE:CODE:NOROOT(2)
        THUMB
I2C_StructInit:
        MOVS     R1,#+0
        STRH     R1,[R0, #+0]
        LDR.N    R1,??DataTable8  ;; 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

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable8:
        DC32     0xbfff

        RSEG CODE:CODE:NOROOT(2)
        THUMB
I2C_Cmd:
        PUSH     {R4,R5,LR}
        MOVS     R4,R0
        MOVS     R5,R1
        CMP      R5,#+0
        BEQ.N    ??I2C_Cmd_0
        CMP      R5,#+1
        BEQ.N    ??I2C_Cmd_0
        MOVS     R1,#+292
        LDR.N    R0,??DataTable18  ;; `?<Constant "C:\\\\David JIANG\\\\ST MCU...">`
        _BLF     assert_failed,??assert_failed??rT
??I2C_Cmd_0:
        CMP      R5,#+0
        BEQ.N    ??I2C_Cmd_1
        LDRH     R0,[R4, #+0]
        ORRS     R0,R0,#0x1

⌨️ 快捷键说明

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