📄 stm32f10x_encoder.s79
字号:
LDR.N R2,??DataTable33 ;; TIM3
LDR R2,[R2, #+0]
LDRH R4,[R2, #+36]
LDR.N R2,??DataTable37 ;; hEncoder_Timer_Overflow
MOVS R3,#+0
STRH R3,[R2, #+0]
??ENC_Calc_Rot_Speed_6:
LDR.N R2,??ENC_Calc_Rot_Speed_4 ;; hPrevious_angle
STRH R4,[R2, #+0]
LSLS R0,R0,#+16 ;; SignExtS R0,R0,#+16,#+16
ASRS R0,R0,#+16
POP {R4-R6,PC} ;; return
DATA
??ENC_Calc_Rot_Speed_4:
DC32 hPrevious_angle
RSEG CODE:CODE:NOROOT(2)
DATA
??DataTable21:
DC32 bIs_First_Measurement
RSEG CODE:CODE:NOROOT(2)
THUMB
ENC_Calc_Average_Speed:
PUSH {LR}
BL ENC_Calc_Rot_Speed
LDR.N R1,??ENC_Calc_Average_Speed_0 ;; bSpeed_Buffer_Index
LDRB R1,[R1, #+0]
MOVS R2,#+2
MULS R1,R2,R1
LDR.N R2,??DataTable28 ;; hSpeed_Buffer
STRH R0,[R2, R1]
LDR.N R0,??ENC_Calc_Average_Speed_0 ;; bSpeed_Buffer_Index
LDR.N R1,??ENC_Calc_Average_Speed_0 ;; bSpeed_Buffer_Index
LDRB R1,[R1, #+0]
ADDS R1,R1,#+1
STRB R1,[R0, #+0]
LDR.N R0,??ENC_Calc_Average_Speed_0 ;; bSpeed_Buffer_Index
LDRB R0,[R0, #+0]
CMP R0,#+8
BNE.N ??ENC_Calc_Average_Speed_1
LDR.N R0,??ENC_Calc_Average_Speed_0 ;; bSpeed_Buffer_Index
MOVS R1,#+0
STRB R1,[R0, #+0]
??ENC_Calc_Average_Speed_1:
MOVS R0,#+0
MOVS R1,#+0
B.N ??ENC_Calc_Average_Speed_2
??ENC_Calc_Average_Speed_3:
MOVS R2,#+2
MULS R2,R1,R2
LDR.N R3,??DataTable28 ;; hSpeed_Buffer
LDRSH R2,[R3, R2]
ADDS R0,R0,R2
ADDS R1,R1,#+1
??ENC_Calc_Average_Speed_2:
CMP R1,#+8
BCC.N ??ENC_Calc_Average_Speed_3
MOVS R1,#+8
SDIV R0,R0,R1
LDR.N R1,??DataTable32 ;; hRot_Speed
STRH R0,[R1, #+0]
POP {PC} ;; return
DATA
??ENC_Calc_Average_Speed_0:
DC32 bSpeed_Buffer_Index
RSEG CODE:CODE:NOROOT(2)
DATA
??DataTable28:
DC32 hSpeed_Buffer
RSEG CODE:CODE:NOROOT(2)
THUMB
LCD_Display:
PUSH {R4,LR}
CMP R0,#+0
BEQ.N ??LCD_Display_0
CMP R0,#+1
BEQ.N ??LCD_Display_1
B.N ??LCD_Display_2
??LCD_Display_0:
LDR.N R0,??DataTable33 ;; TIM3
LDR R0,[R0, #+0]
_BLF TIM_GetCounter,??TIM_GetCounter??rT
MOVS R4,R0
MOVS R0,R4
LSLS R0,R0,#+16 ;; ZeroExtS R0,R0,#+16,#+16
LSRS R0,R0,#+16
_BLF int2char,??int2char??rT
_BLF write_string,??write_string??rT
B.N ??LCD_Display_3
??LCD_Display_1:
BL ENC_Get_Electrical_Angle
MOVS R1,#+360
MULS R0,R1,R0
LDR.N R1,??DataTable35 ;; 0xffff
SDIV R4,R0,R1
LSLS R4,R4,#+16 ;; SignExtS R4,R4,#+16,#+16
ASRS R4,R4,#+16
CMP R4,#+0
BPL.N ??LCD_Display_4
LSLS R4,R4,#+16 ;; SignExtS R4,R4,#+16,#+16
ASRS R4,R4,#+16
MOVS R0,R4
RSBS R4,R0,#+0
MOVS R0,R4
LSLS R0,R0,#+16 ;; ZeroExtS R0,R0,#+16,#+16
LSRS R0,R0,#+16
_BLF int2char,??int2char??rT
MOVS R1,#+45
STRB R1,[R0, #+0]
B.N ??LCD_Display_5
??LCD_Display_4:
MOVS R0,R4
LSLS R0,R0,#+16 ;; ZeroExtS R0,R0,#+16,#+16
LSRS R0,R0,#+16
_BLF int2char,??int2char??rT
LSLS R4,R4,#+16 ;; ZeroExtS R4,R4,#+16,#+16
LSRS R4,R4,#+16
CMP R4,#+0
BEQ.N ??LCD_Display_5
MOVS R1,#+43
STRB R1,[R0, #+0]
??LCD_Display_5:
_BLF write_string,??write_string??rT
B.N ??LCD_Display_3
??LCD_Display_2:
LDR.N R0,??DataTable32 ;; hRot_Speed
LDRSH R4,[R0, #+0]
CMP R4,#+0
BPL.N ??LCD_Display_6
MOVS R0,R4
RSBS R4,R0,#+0
MOVS R0,R4
LSLS R0,R0,#+16 ;; ZeroExtS R0,R0,#+16,#+16
LSRS R0,R0,#+16
_BLF int2char,??int2char??rT
MOVS R1,#+45
STRB R1,[R0, #+0]
B.N ??LCD_Display_7
??LCD_Display_6:
MOVS R0,R4
LSLS R0,R0,#+16 ;; ZeroExtS R0,R0,#+16,#+16
LSRS R0,R0,#+16
_BLF int2char,??int2char??rT
LSLS R4,R4,#+16 ;; ZeroExtS R4,R4,#+16,#+16
LSRS R4,R4,#+16
CMP R4,#+0
BEQ.N ??LCD_Display_7
MOVS R1,#+43
STRB R1,[R0, #+0]
??LCD_Display_7:
_BLF write_string,??write_string??rT
??LCD_Display_3:
POP {R4,PC} ;; return
RSEG CODE:CODE:NOROOT(2)
DATA
??DataTable32:
DC32 hRot_Speed
RSEG CODE:CODE:NOROOT(2)
THUMB
TIM3_IRQHandler:
PUSH {LR}
MOVS R1,#+1
LDR.N R0,??DataTable33 ;; TIM3
LDR R0,[R0, #+0]
_BLF TIM_ClearFlag,??TIM_ClearFlag??rT
LDR.N R0,??DataTable37 ;; hEncoder_Timer_Overflow
LDRH R0,[R0, #+0]
LDR.N R1,??DataTable35 ;; 0xffff
CMP R0,R1
BEQ.N ??TIM3_IRQHandler_0
LDR.N R0,??DataTable37 ;; hEncoder_Timer_Overflow
LDR.N R1,??DataTable37 ;; hEncoder_Timer_Overflow
LDRH R1,[R1, #+0]
ADDS R1,R1,#+1
STRH R1,[R0, #+0]
??TIM3_IRQHandler_0:
POP {PC} ;; return
RSEG CODE:CODE:NOROOT(2)
DATA
??DataTable33:
DC32 TIM3
RSEG CODE:CODE:NOROOT(2)
DATA
??DataTable35:
DC32 0xffff
RSEG CODE:CODE:NOROOT(2)
DATA
??DataTable37:
DC32 hEncoder_Timer_Overflow
RSEG CODE:CODE:NOROOT(2)
THUMB
??RCC_APB1PeriphClockCmd??rT:
LDR.N R3,??Subroutine0_0 ;; RCC_APB1PeriphClockCmd
BX R3
DATA
??Subroutine0_0:
DC32 RCC_APB1PeriphClockCmd
RSEG CODE:CODE:NOROOT(2)
THUMB
??RCC_APB2PeriphClockCmd??rT:
LDR.N R3,??Subroutine1_0 ;; RCC_APB2PeriphClockCmd
BX R3
DATA
??Subroutine1_0:
DC32 RCC_APB2PeriphClockCmd
RSEG CODE:CODE:NOROOT(2)
THUMB
??GPIO_StructInit??rT:
LDR.N R3,??Subroutine2_0 ;; GPIO_StructInit
BX R3
DATA
??Subroutine2_0:
DC32 GPIO_StructInit
RSEG CODE:CODE:NOROOT(2)
THUMB
??GPIO_Init??rT:
LDR.N R3,??Subroutine3_0 ;; GPIO_Init
BX R3
DATA
??Subroutine3_0:
DC32 GPIO_Init
RSEG CODE:CODE:NOROOT(2)
THUMB
??NVIC_Init??rT:
LDR.N R3,??Subroutine4_0 ;; NVIC_Init
BX R3
DATA
??Subroutine4_0:
DC32 NVIC_Init
RSEG CODE:CODE:NOROOT(2)
THUMB
??TIM_DeInit??rT:
LDR.N R3,??Subroutine5_0 ;; TIM_DeInit
BX R3
DATA
??Subroutine5_0:
DC32 TIM_DeInit
RSEG CODE:CODE:NOROOT(2)
THUMB
??TIM_TimeBaseStructInit??rT:
LDR.N R3,??Subroutine6_0 ;; TIM_TimeBaseStructInit
BX R3
DATA
??Subroutine6_0:
DC32 TIM_TimeBaseStructInit
RSEG CODE:CODE:NOROOT(2)
THUMB
??TIM_TimeBaseInit??rT:
LDR.N R3,??Subroutine7_0 ;; TIM_TimeBaseInit
BX R3
DATA
??Subroutine7_0:
DC32 TIM_TimeBaseInit
RSEG CODE:CODE:NOROOT(2)
THUMB
??TIM_EncoderInterfaceConfig??rT:
PUSH {R3}
LDR.N R3,??Subroutine8_0 ;; TIM_EncoderInterfaceConfig
MOV R12,R3
POP {R3}
BX R12
Nop
DATA
??Subroutine8_0:
DC32 TIM_EncoderInterfaceConfig
RSEG CODE:CODE:NOROOT(2)
THUMB
??TIM_ICStructInit??rT:
LDR.N R3,??Subroutine9_0 ;; TIM_ICStructInit
BX R3
DATA
??Subroutine9_0:
DC32 TIM_ICStructInit
RSEG CODE:CODE:NOROOT(2)
THUMB
??TIM_ICInit??rT:
LDR.N R3,??Subroutine10_0 ;; TIM_ICInit
BX R3
DATA
??Subroutine10_0:
DC32 TIM_ICInit
RSEG CODE:CODE:NOROOT(2)
THUMB
??TIM_ClearFlag??rT:
LDR.N R3,??Subroutine11_0 ;; TIM_ClearFlag
BX R3
DATA
??Subroutine11_0:
DC32 TIM_ClearFlag
RSEG CODE:CODE:NOROOT(2)
THUMB
??TIM_ITConfig??rT:
LDR.N R3,??Subroutine12_0 ;; TIM_ITConfig
BX R3
DATA
??Subroutine12_0:
DC32 TIM_ITConfig
RSEG CODE:CODE:NOROOT(2)
THUMB
??TIM_Cmd??rT:
LDR.N R3,??Subroutine13_0 ;; TIM_Cmd
BX R3
DATA
??Subroutine13_0:
DC32 TIM_Cmd
RSEG CODE:CODE:NOROOT(2)
THUMB
??TIM_GetCounter??rT:
LDR.N R3,??Subroutine14_0 ;; TIM_GetCounter
BX R3
DATA
??Subroutine14_0:
DC32 TIM_GetCounter
RSEG CODE:CODE:NOROOT(2)
THUMB
??rT??llmul_t:
PUSH {R3}
LDR.N R3,??Subroutine15_0 ;; ??llmul_t
MOV R12,R3
POP {R3}
BX R12
Nop
DATA
??Subroutine15_0:
DC32 ??llmul_t
RSEG CODE:CODE:NOROOT(2)
THUMB
??rT??div64_t:
PUSH {R3}
LDR.N R3,??Subroutine16_0 ;; ??div64_t
MOV R12,R3
POP {R3}
BX R12
Nop
DATA
??Subroutine16_0:
DC32 ??div64_t
RSEG CODE:CODE:NOROOT(2)
THUMB
??int2char??rT:
LDR.N R3,??Subroutine17_0 ;; int2char
BX R3
DATA
??Subroutine17_0:
DC32 int2char
RSEG CODE:CODE:NOROOT(2)
THUMB
??write_string??rT:
LDR.N R3,??Subroutine18_0 ;; write_string
BX R3
DATA
??Subroutine18_0:
DC32 write_string
RSEG DATA_ID:CONST:SORT:NOROOT(0)
`?<Initializer for bIs_First_Measurement>`:
DATA
DC8 1
RSEG DATA_ID:CONST:SORT:NOROOT(2)
`?*?DATA_ID`:
RSEG INITTAB:CODE:ROOT(2)
DATA
?init?tab?DATA_I:
DCD sfe(DATA_I) - sfb(DATA_I), sfb(DATA_I), sfb(DATA_ID)
RSEG INITTAB:CODE:ROOT(2)
DATA
?init?tab?DATA_Z:
DCD sfe(DATA_Z) - sfb(DATA_Z), sfb(DATA_Z), sfb(DATA_Z)
END
//
// 990 bytes in segment CODE
// 1 byte in segment DATA_I
// 1 byte in segment DATA_ID
// 23 bytes in segment DATA_Z
// 24 bytes in segment INITTAB
//
// 814 bytes of CODE memory (+ 200 bytes shared)
// 1 byte of CONST memory
// 24 bytes of DATA memory
//
//Errors: none
//Warnings: none
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -