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

📄 stm32f10x_spi.s79

📁 STM32利用正交编码器实现电机的控制
💻 S79
📖 第 1 页 / 共 2 页
字号:
        RSEG CODE:CODE:NOROOT(2)
        THUMB
SPI_NSSInternalSoftwareConfig:
        PUSH     {R4,R5,LR}
        MOVS     R4,R0
        MOVS     R5,R1
        MOVS     R0,#+256
        CMP      R5,R0
        BEQ.N    ??SPI_NSSInternalSoftwareConfig_0
        LDR.N    R0,??SPI_NSSInternalSoftwareConfig_1  ;; 0xfeff
        CMP      R5,R0
        BEQ.N    ??SPI_NSSInternalSoftwareConfig_0
        LDR.N    R1,??SPI_NSSInternalSoftwareConfig_1+0x4  ;; 0x137
        LDR.N    R0,??DataTable18  ;; `?<Constant "C:\\\\David JIANG\\\\ST MCU...">`
        _BLF     assert_failed,??assert_failed??rT
??SPI_NSSInternalSoftwareConfig_0:
        LDR.N    R0,??SPI_NSSInternalSoftwareConfig_1  ;; 0xfeff
        CMP      R5,R0
        BEQ.N    ??SPI_NSSInternalSoftwareConfig_2
        LDRH     R0,[R4, #+0]
        ORRS     R0,R0,#0x100
        STRH     R0,[R4, #+0]
        B.N      ??SPI_NSSInternalSoftwareConfig_3
??SPI_NSSInternalSoftwareConfig_2:
        LDRH     R0,[R4, #+0]
        LDR.N    R1,??SPI_NSSInternalSoftwareConfig_1  ;; 0xfeff
        ANDS     R1,R1,R0
        STRH     R1,[R4, #+0]
??SPI_NSSInternalSoftwareConfig_3:
        POP      {R4,R5,PC}       ;; return
        Nop      
        DATA
??SPI_NSSInternalSoftwareConfig_1:
        DC32     0xfeff
        DC32     0x137

        RSEG CODE:CODE:NOROOT(2)
        THUMB
SPI_SSOutputCmd:
        PUSH     {R4,R5,LR}
        MOVS     R4,R0
        MOVS     R5,R1
        CMP      R5,#+0
        BEQ.N    ??SPI_SSOutputCmd_0
        CMP      R5,#+1
        BEQ.N    ??SPI_SSOutputCmd_0
        LDR.N    R1,??SPI_SSOutputCmd_1  ;; 0x151
        LDR.N    R0,??DataTable18  ;; `?<Constant "C:\\\\David JIANG\\\\ST MCU...">`
        _BLF     assert_failed,??assert_failed??rT
??SPI_SSOutputCmd_0:
        CMP      R5,#+0
        BEQ.N    ??SPI_SSOutputCmd_2
        LDRH     R0,[R4, #+4]
        ORRS     R0,R0,#0x4
        STRH     R0,[R4, #+4]
        B.N      ??SPI_SSOutputCmd_3
??SPI_SSOutputCmd_2:
        LDRH     R0,[R4, #+4]
        LDR.N    R1,??SPI_SSOutputCmd_1+0x4  ;; 0xfffb
        ANDS     R1,R1,R0
        STRH     R1,[R4, #+4]
??SPI_SSOutputCmd_3:
        POP      {R4,R5,PC}       ;; return
        Nop      
        DATA
??SPI_SSOutputCmd_1:
        DC32     0x151
        DC32     0xfffb

        RSEG CODE:CODE:NOROOT(2)
        THUMB
SPI_DataSizeConfig:
        PUSH     {R4,R5,LR}
        MOVS     R4,R0
        MOVS     R5,R1
        MOVS     R0,#+2048
        CMP      R5,R0
        BEQ.N    ??SPI_DataSizeConfig_0
        CMP      R5,#+0
        BEQ.N    ??SPI_DataSizeConfig_0
        LDR.N    R1,??SPI_DataSizeConfig_1  ;; 0x16d
        LDR.N    R0,??DataTable18  ;; `?<Constant "C:\\\\David JIANG\\\\ST MCU...">`
        _BLF     assert_failed,??assert_failed??rT
??SPI_DataSizeConfig_0:
        LDRH     R0,[R4, #+0]
        LDR.N    R1,??SPI_DataSizeConfig_1+0x4  ;; 0xf7ff
        ANDS     R1,R1,R0
        STRH     R1,[R4, #+0]
        LDRH     R0,[R4, #+0]
        ORRS     R5,R5,R0
        STRH     R5,[R4, #+0]
        POP      {R4,R5,PC}       ;; return
        Nop      
        DATA
??SPI_DataSizeConfig_1:
        DC32     0x16d
        DC32     0xf7ff

        RSEG CODE:CODE:NOROOT(2)
        THUMB
SPI_TransmitCRC:
        LDRH     R1,[R0, #+0]
        ORRS     R1,R1,#0x1000
        STRH     R1,[R0, #+0]
        BX       LR               ;; return

        RSEG CODE:CODE:NOROOT(2)
        THUMB
SPI_CalculateCRC:
        PUSH     {R4,R5,LR}
        MOVS     R4,R0
        MOVS     R5,R1
        CMP      R5,#+0
        BEQ.N    ??SPI_CalculateCRC_0
        CMP      R5,#+1
        BEQ.N    ??SPI_CalculateCRC_0
        LDR.N    R1,??SPI_CalculateCRC_1  ;; 0x18f
        LDR.N    R0,??DataTable18  ;; `?<Constant "C:\\\\David JIANG\\\\ST MCU...">`
        _BLF     assert_failed,??assert_failed??rT
??SPI_CalculateCRC_0:
        CMP      R5,#+0
        BEQ.N    ??SPI_CalculateCRC_2
        LDRH     R0,[R4, #+0]
        ORRS     R0,R0,#0x2000
        STRH     R0,[R4, #+0]
        B.N      ??SPI_CalculateCRC_3
??SPI_CalculateCRC_2:
        LDRH     R0,[R4, #+0]
        LDR.N    R1,??SPI_CalculateCRC_1+0x4  ;; 0xdfff
        ANDS     R1,R1,R0
        STRH     R1,[R4, #+0]
??SPI_CalculateCRC_3:
        POP      {R4,R5,PC}       ;; return
        Nop      
        DATA
??SPI_CalculateCRC_1:
        DC32     0x18f
        DC32     0xdfff

        RSEG CODE:CODE:NOROOT(2)
        THUMB
SPI_GetCRC:
        PUSH     {R4,R5,LR}
        MOVS     R4,R0
        MOVS     R5,R1
        MOVS     R0,#+0
        CMP      R5,#+0
        BEQ.N    ??SPI_GetCRC_0
        CMP      R5,#+1
        BEQ.N    ??SPI_GetCRC_0
        MOVS     R1,#+430
        LDR.N    R0,??DataTable18  ;; `?<Constant "C:\\\\David JIANG\\\\ST MCU...">`
        _BLF     assert_failed,??assert_failed??rT
??SPI_GetCRC_0:
        CMP      R5,#+1
        BEQ.N    ??SPI_GetCRC_1
        LDRH     R0,[R4, #+24]
        B.N      ??SPI_GetCRC_2
??SPI_GetCRC_1:
        LDRH     R0,[R4, #+20]
??SPI_GetCRC_2:
        POP      {R4,R5,PC}       ;; return

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable18:
        DC32     `?<Constant "C:\\\\David JIANG\\\\ST MCU...">`

        RSEG CODE:CODE:NOROOT(2)
        THUMB
SPI_GetCRCPolynomial:
        LDRH     R0,[R0, #+16]
        BX       LR               ;; return

        RSEG CODE:CODE:NOROOT(2)
        THUMB
SPI_BiDirectionalLineConfig:
        PUSH     {R4,R5,LR}
        MOVS     R4,R0
        MOVS     R5,R1
        LDR.N    R0,??SPI_BiDirectionalLineConfig_0  ;; 0xbfff
        CMP      R5,R0
        BEQ.N    ??SPI_BiDirectionalLineConfig_1
        MOVS     R0,#+16384
        CMP      R5,R0
        BEQ.N    ??SPI_BiDirectionalLineConfig_1
        MOVS     R1,#+476
        LDR.N    R0,??DataTable23  ;; `?<Constant "C:\\\\David JIANG\\\\ST MCU...">`
        _BLF     assert_failed,??assert_failed??rT
??SPI_BiDirectionalLineConfig_1:
        MOVS     R0,#+16384
        CMP      R5,R0
        BNE.N    ??SPI_BiDirectionalLineConfig_2
        LDRH     R0,[R4, #+0]
        ORRS     R0,R0,#0x4000
        STRH     R0,[R4, #+0]
        B.N      ??SPI_BiDirectionalLineConfig_3
??SPI_BiDirectionalLineConfig_2:
        LDRH     R0,[R4, #+0]
        LDR.N    R1,??SPI_BiDirectionalLineConfig_0  ;; 0xbfff
        ANDS     R1,R1,R0
        STRH     R1,[R4, #+0]
??SPI_BiDirectionalLineConfig_3:
        POP      {R4,R5,PC}       ;; return
        Nop      
        DATA
??SPI_BiDirectionalLineConfig_0:
        DC32     0xbfff

        RSEG CODE:CODE:NOROOT(2)
        THUMB
SPI_GetFlagStatus:
        PUSH     {R4,R5,LR}
        MOVS     R4,R0
        MOVS     R5,R1
        MOVS     R0,#+0
        CMP      R5,#+128
        BEQ.N    ??SPI_GetFlagStatus_0
        CMP      R5,#+64
        BEQ.N    ??SPI_GetFlagStatus_0
        CMP      R5,#+32
        BEQ.N    ??SPI_GetFlagStatus_0
        CMP      R5,#+16
        BEQ.N    ??SPI_GetFlagStatus_0
        CMP      R5,#+2
        BEQ.N    ??SPI_GetFlagStatus_0
        CMP      R5,#+1
        BEQ.N    ??SPI_GetFlagStatus_0
        MOVS     R1,#+510
        LDR.N    R0,??DataTable23  ;; `?<Constant "C:\\\\David JIANG\\\\ST MCU...">`
        _BLF     assert_failed,??assert_failed??rT
??SPI_GetFlagStatus_0:
        LDRH     R0,[R4, #+8]
        TST      R0,R5
        BEQ.N    ??SPI_GetFlagStatus_1
        MOVS     R0,#+1
        B.N      ??SPI_GetFlagStatus_2
??SPI_GetFlagStatus_1:
        MOVS     R0,#+0
??SPI_GetFlagStatus_2:
        POP      {R4,R5,PC}       ;; return

        RSEG CODE:CODE:NOROOT(2)
        THUMB
SPI_ClearFlag:
        PUSH     {R4,R5,LR}
        MOVS     R4,R0
        MOVS     R5,R1
        LDR.N    R0,??SPI_ClearFlag_0  ;; 0xff8f
        TST      R5,R0
        BNE.N    ??SPI_ClearFlag_1
        CMP      R5,#+0
        BNE.N    ??SPI_ClearFlag_2
??SPI_ClearFlag_1:
        LDR.N    R1,??SPI_ClearFlag_0+0x4  ;; 0x21e
        LDR.N    R0,??DataTable23  ;; `?<Constant "C:\\\\David JIANG\\\\ST MCU...">`
        _BLF     assert_failed,??assert_failed??rT
??SPI_ClearFlag_2:
        CMP      R5,#+32
        BNE.N    ??SPI_ClearFlag_3
        LDRH     R0,[R4, #+8]
        LDRH     R1,[R4, #+0]
        ORRS     R1,R1,#0x40
        STRH     R1,[R4, #+0]
        B.N      ??SPI_ClearFlag_4
??SPI_ClearFlag_3:
        CMP      R5,#+64
        BNE.N    ??SPI_ClearFlag_5
        LDRH     R0,[R4, #+8]
        B.N      ??SPI_ClearFlag_4
??SPI_ClearFlag_5:
        LDRH     R0,[R4, #+8]
        BICS     R0,R0,R5
        STRH     R0,[R4, #+8]
??SPI_ClearFlag_4:
        POP      {R4,R5,PC}       ;; return
        DATA
??SPI_ClearFlag_0:
        DC32     0xff8f
        DC32     0x21e

        RSEG CODE:CODE:NOROOT(2)
        THUMB
SPI_GetITStatus:
        PUSH     {R4,R5,LR}
        MOVS     R4,R0
        MOVS     R5,R1
        MOVS     R0,#+0
        MOVS     R1,#+0
        MOVS     R2,#+0
        MOVS     R3,#+0
        CMP      R5,#+113
        BEQ.N    ??SPI_GetITStatus_0
        CMP      R5,#+96
        BEQ.N    ??SPI_GetITStatus_0
        CMP      R5,#+86
        BEQ.N    ??SPI_GetITStatus_0
        CMP      R5,#+85
        BEQ.N    ??SPI_GetITStatus_0
        CMP      R5,#+84
        BEQ.N    ??SPI_GetITStatus_0
        LDR.N    R1,??SPI_GetITStatus_1  ;; 0x249
        LDR.N    R0,??DataTable23  ;; `?<Constant "C:\\\\David JIANG\\\\ST MCU...">`
        _BLF     assert_failed,??assert_failed??rT
??SPI_GetITStatus_0:
        MOVS     R1,#+1
        LSLS     R0,R5,#+28       ;; ZeroExtS R0,R5,#+28,#+28
        LSRS     R0,R0,#+28
        LSLS     R1,R1,R0
        MOVS     R2,R5
        LSLS     R2,R2,#+24       ;; ZeroExtS R2,R2,#+24,#+24
        LSRS     R2,R2,#+24
        LSRS     R2,R2,#+4
        LSLS     R2,R2,#+24       ;; ZeroExtS R2,R2,#+24,#+24
        LSRS     R2,R2,#+24
        MOVS     R3,#+1
        MOVS     R0,R2
        MOVS     R2,R3
        LSLS     R2,R2,R0
        LDRH     R0,[R4, #+4]
        ANDS     R2,R2,R0
        MOVS     R3,R2
        LDRH     R0,[R4, #+8]
        TST      R0,R1
        BEQ.N    ??SPI_GetITStatus_2
        LSLS     R3,R3,#+16       ;; ZeroExtS R3,R3,#+16,#+16
        LSRS     R3,R3,#+16
        CMP      R3,#+0
        BEQ.N    ??SPI_GetITStatus_2
        MOVS     R0,#+1
        B.N      ??SPI_GetITStatus_3
??SPI_GetITStatus_2:
        MOVS     R0,#+0
??SPI_GetITStatus_3:
        POP      {R4,R5,PC}       ;; return
        Nop      
        DATA
??SPI_GetITStatus_1:
        DC32     0x249

        RSEG CODE:CODE:NOROOT(2)
        THUMB
SPI_ClearITPendingBit:
        PUSH     {R4,R5,LR}
        MOVS     R4,R0
        MOVS     R5,R1
        MOVS     R0,#+0
        CMP      R5,#+86
        BEQ.N    ??SPI_ClearITPendingBit_0
        CMP      R5,#+85
        BEQ.N    ??SPI_ClearITPendingBit_0
        CMP      R5,#+84
        BEQ.N    ??SPI_ClearITPendingBit_0
        LDR.N    R1,??SPI_ClearITPendingBit_1  ;; 0x275
        LDR.N    R0,??DataTable23  ;; `?<Constant "C:\\\\David JIANG\\\\ST MCU...">`
        _BLF     assert_failed,??assert_failed??rT
??SPI_ClearITPendingBit_0:
        CMP      R5,#+85
        BNE.N    ??SPI_ClearITPendingBit_2
        LDRH     R0,[R4, #+8]
        LDRH     R1,[R4, #+0]
        ORRS     R1,R1,#0x40
        STRH     R1,[R4, #+0]
        B.N      ??SPI_ClearITPendingBit_3
??SPI_ClearITPendingBit_2:
        CMP      R5,#+86
        BNE.N    ??SPI_ClearITPendingBit_4
        LDRH     R0,[R4, #+8]
        B.N      ??SPI_ClearITPendingBit_3
??SPI_ClearITPendingBit_4:
        MOVS     R0,#+1
        LSLS     R1,R5,#+28       ;; ZeroExtS R1,R5,#+28,#+28
        LSRS     R1,R1,#+28
        LSLS     R0,R0,R1
        LDRH     R1,[R4, #+8]
        BICS     R1,R1,R0
        STRH     R1,[R4, #+8]
??SPI_ClearITPendingBit_3:
        POP      {R4,R5,PC}       ;; return
        DATA
??SPI_ClearITPendingBit_1:
        DC32     0x275

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable23:
        DC32     `?<Constant "C:\\\\David JIANG\\\\ST MCU...">`

        RSEG CODE:CODE:NOROOT(2)
        THUMB
??RCC_APB2PeriphResetCmd??rT:
        LDR.N    R3,??Subroutine0_0  ;; RCC_APB2PeriphResetCmd
        BX       R3
        DATA
??Subroutine0_0:
        DC32     RCC_APB2PeriphResetCmd

        RSEG CODE:CODE:NOROOT(2)
        THUMB
??RCC_APB1PeriphResetCmd??rT:
        LDR.N    R3,??Subroutine1_0  ;; RCC_APB1PeriphResetCmd
        BX       R3
        DATA
??Subroutine1_0:
        DC32     RCC_APB1PeriphResetCmd

        RSEG CODE:CODE:NOROOT(2)
        THUMB
??assert_failed??rT:
        LDR.N    R3,??Subroutine2_0  ;; assert_failed
        BX       R3
        DATA
??Subroutine2_0:
        DC32     assert_failed

        RSEG DATA_C:CONST:SORT:NOROOT(2)
`?<Constant "C:\\\\David JIANG\\\\ST MCU...">`:
        DATA
        DC8 43H, 3AH, 5CH, 44H, 61H, 76H, 69H, 64H
        DC8 20H, 4AH, 49H, 41H, 4EH, 47H, 5CH, 53H
        DC8 54H, 20H, 4DH, 43H, 55H, 5CH, 44H, 6FH
        DC8 63H, 73H, 5CH, 53H, 54H, 4DH, 33H, 32H
        DC8 5CH, 41H, 4EH, 5FH, 4AH, 49H, 41H, 4EH
        DC8 47H, 5CH, 54H, 49H, 4DH, 20H, 45H, 6EH
        DC8 63H, 6FH, 64H, 65H, 72H, 5CH, 65H, 78H
        DC8 61H, 6DH, 70H, 6CH, 65H, 5CH, 46H, 57H
        DC8 4CH, 69H, 62H, 5CH, 73H, 72H, 63H, 5CH
        DC8 73H, 74H, 6DH, 33H, 32H, 66H, 31H, 30H
        DC8 78H, 5FH, 73H, 70H, 69H, 2EH, 63H, 0

        END
// 
// 1 292 bytes in segment CODE
//    88 bytes in segment DATA_C
// 
// 1 268 bytes of CODE  memory (+ 24 bytes shared)
//    88 bytes of CONST memory
//
//Errors: none
//Warnings: none

⌨️ 快捷键说明

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