?? stm32f10x_encoder.s79
字號:
//////////////////////////////////////////////////////////////////////////////
// /
// IAR ARM ANSI C/C++ Compiler V4.42A/W32 15/May/2008 12:06:30 /
// 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\project\source\stm32f10x_encoder.c /
// Command line = "C:\David JIANG\ST MCU\Docs\STM32\AN_JIANG\TIM /
// Encoder\example\project\source\stm32f10x_encoder.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_encoder.s79 /
// /
// /
//////////////////////////////////////////////////////////////////////////////
NAME stm32f10x_encoder
RSEG CSTACK:DATA:NOROOT(2)
EXTERN ??div64_t
EXTERN ??llmul_t
PUBWEAK `?*?DATA_ID`
??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
??DataTable18 EQU 0
??DataTable19 EQU 0
??DataTable2 EQU 0
??DataTable20 EQU 0
??DataTable22 EQU 0
??DataTable23 EQU 0
??DataTable24 EQU 0
??DataTable25 EQU 0
??DataTable26 EQU 0
??DataTable27 EQU 0
??DataTable29 EQU 0
??DataTable3 EQU 0
??DataTable30 EQU 0
??DataTable31 EQU 0
??DataTable34 EQU 0
??DataTable36 EQU 0
??DataTable4 EQU 0
??DataTable5 EQU 0
??DataTable6 EQU 0
??DataTable7 EQU 0
??DataTable8 EQU 0
??DataTable9 EQU 0
MULTWEAK ??GPIO_Init??rT
MULTWEAK ??GPIO_StructInit??rT
MULTWEAK ??NVIC_Init??rT
MULTWEAK ??RCC_APB1PeriphClockCmd??rT
MULTWEAK ??RCC_APB2PeriphClockCmd??rT
MULTWEAK ??TIM_ClearFlag??rT
MULTWEAK ??TIM_Cmd??rT
MULTWEAK ??TIM_DeInit??rT
MULTWEAK ??TIM_EncoderInterfaceConfig??rT
MULTWEAK ??TIM_GetCounter??rT
MULTWEAK ??TIM_ICInit??rT
MULTWEAK ??TIM_ICStructInit??rT
MULTWEAK ??TIM_ITConfig??rT
MULTWEAK ??TIM_TimeBaseInit??rT
MULTWEAK ??TIM_TimeBaseStructInit??rT
MULTWEAK ??int2char??rT
MULTWEAK ??rT??div64_t
MULTWEAK ??rT??llmul_t
MULTWEAK ??write_string??rT
PUBWEAK ?init?tab?DATA_I
PUBWEAK ?init?tab?DATA_Z
PUBLIC ENC_Calc_Average_Speed
PUBLIC ENC_Calc_Rot_Speed
PUBLIC ENC_Clear_Speed_Buffer
PUBLIC ENC_Get_Electrical_Angle
PUBLIC ENC_Init
PUBLIC LCD_Display
PUBLIC TIM3_IRQHandler
GPIO_Init SYMBOL "GPIO_Init"
GPIO_StructInit SYMBOL "GPIO_StructInit"
NVIC_Init SYMBOL "NVIC_Init"
RCC_APB1PeriphClockCmd SYMBOL "RCC_APB1PeriphClockCmd"
RCC_APB2PeriphClockCmd SYMBOL "RCC_APB2PeriphClockCmd"
TIM_ClearFlag SYMBOL "TIM_ClearFlag"
TIM_Cmd SYMBOL "TIM_Cmd"
TIM_DeInit SYMBOL "TIM_DeInit"
TIM_EncoderInterfaceConfig SYMBOL "TIM_EncoderInterfaceConfig"
TIM_GetCounter SYMBOL "TIM_GetCounter"
TIM_ICInit SYMBOL "TIM_ICInit"
TIM_ICStructInit SYMBOL "TIM_ICStructInit"
TIM_ITConfig SYMBOL "TIM_ITConfig"
TIM_TimeBaseInit SYMBOL "TIM_TimeBaseInit"
TIM_TimeBaseStructInit SYMBOL "TIM_TimeBaseStructInit"
int2char SYMBOL "int2char"
write_string SYMBOL "write_string"
??GPIO_Init??rT SYMBOL "??rT", GPIO_Init
??GPIO_StructInit??rT SYMBOL "??rT", GPIO_StructInit
??NVIC_Init??rT SYMBOL "??rT", NVIC_Init
??RCC_APB1PeriphClockCmd??rT SYMBOL "??rT", RCC_APB1PeriphClockCmd
??RCC_APB2PeriphClockCmd??rT SYMBOL "??rT", RCC_APB2PeriphClockCmd
??TIM_ClearFlag??rT SYMBOL "??rT", TIM_ClearFlag
??TIM_Cmd??rT SYMBOL "??rT", TIM_Cmd
??TIM_DeInit??rT SYMBOL "??rT", TIM_DeInit
??TIM_EncoderInterfaceConfig??rT SYMBOL "??rT", TIM_EncoderInterfaceConfig
??TIM_GetCounter??rT SYMBOL "??rT", TIM_GetCounter
??TIM_ICInit??rT SYMBOL "??rT", TIM_ICInit
??TIM_ICStructInit??rT SYMBOL "??rT", TIM_ICStructInit
??TIM_ITConfig??rT SYMBOL "??rT", TIM_ITConfig
??TIM_TimeBaseInit??rT SYMBOL "??rT", TIM_TimeBaseInit
??TIM_TimeBaseStructInit??rT SYMBOL "??rT", TIM_TimeBaseStructInit
??int2char??rT SYMBOL "??rT", int2char
??write_string??rT SYMBOL "??rT", write_string
EXTERN GPIOA
EXTERN GPIO_Init
EXTERN GPIO_StructInit
EXTERN NVIC_Init
EXTERN RCC_APB1PeriphClockCmd
EXTERN RCC_APB2PeriphClockCmd
EXTERN TIM2
EXTERN TIM3
EXTERN TIM_ClearFlag
EXTERN TIM_Cmd
EXTERN TIM_DeInit
EXTERN TIM_EncoderInterfaceConfig
EXTERN TIM_GetCounter
EXTERN TIM_ICInit
EXTERN TIM_ICStructInit
EXTERN TIM_ITConfig
EXTERN TIM_TimeBaseInit
EXTERN TIM_TimeBaseStructInit
EXTERN int2char
EXTERN write_string
RSEG DATA_Z:DATA:SORT:NOROOT(1)
hPrevious_angle:
DS8 2
RSEG DATA_Z:DATA:SORT:NOROOT(2)
hSpeed_Buffer:
DS8 16
RSEG DATA_Z:DATA:SORT:NOROOT(1)
hRot_Speed:
DS8 2
RSEG DATA_Z:DATA:SORT:NOROOT(0)
bSpeed_Buffer_Index:
DS8 1
RSEG DATA_Z:DATA:SORT:NOROOT(1)
hEncoder_Timer_Overflow:
DS8 2
RSEG DATA_I:DATA:SORT:NOROOT(0)
bIs_First_Measurement:
DS8 1
REQUIRE `?<Initializer for bIs_First_Measurement>`
RSEG CODE:CODE:NOROOT(2)
THUMB
ENC_Init:
PUSH {LR}
SUB SP,SP,#+28
MOVS R1,#+1
MOVS R0,#+2
_BLF RCC_APB1PeriphClockCmd,??RCC_APB1PeriphClockCmd??rT
MOVS R1,#+1
MOVS R0,#+4
_BLF RCC_APB2PeriphClockCmd,??RCC_APB2PeriphClockCmd??rT
ADD R0,SP,#+4
_BLF GPIO_StructInit,??GPIO_StructInit??rT
MOVS R0,#+192
STRH R0,[SP, #+4]
MOVS R0,#+4
STRB R0,[SP, #+7]
ADD R1,SP,#+4
LDR.N R0,??ENC_Init_0 ;; GPIOA
LDR R0,[R0, #+0]
_BLF GPIO_Init,??GPIO_Init??rT
MOVS R0,#+29
STRB R0,[SP, #+0]
MOVS R0,#+1
STRB R0,[SP, #+1]
MOVS R0,#+0
STRB R0,[SP, #+2]
MOVS R0,#+1
STRB R0,[SP, #+3]
MOV R0,SP
_BLF NVIC_Init,??NVIC_Init??rT
LDR.N R0,??DataTable33 ;; TIM3
LDR R0,[R0, #+0]
_BLF TIM_DeInit,??TIM_DeInit??rT
ADD R0,SP,#+8
_BLF TIM_TimeBaseStructInit,??TIM_TimeBaseStructInit??rT
MOVS R0,#+0
STRH R0,[SP, #+10]
LDR.N R0,??ENC_Init_0+0x4 ;; 0x63f
STRH R0,[SP, #+8]
MOVS R0,#+0
STRH R0,[SP, #+12]
MOVS R0,#+0
STRH R0,[SP, #+14]
ADD R1,SP,#+8
LDR.N R0,??DataTable33 ;; TIM3
LDR R0,[R0, #+0]
_BLF TIM_TimeBaseInit,??TIM_TimeBaseInit??rT
MOVS R3,#+0
MOVS R2,#+0
MOVS R1,#+3
LDR.N R0,??DataTable33 ;; TIM3
LDR R0,[R0, #+0]
_BLF TIM_EncoderInterfaceConfig,??TIM_EncoderInterfaceConfig??rT
ADD R0,SP,#+16
_BLF TIM_ICStructInit,??TIM_ICStructInit??rT
MOVS R0,#+6
STRB R0,[SP, #+26]
ADD R1,SP,#+16
LDR.N R0,??DataTable33 ;; TIM3
LDR R0,[R0, #+0]
_BLF TIM_ICInit,??TIM_ICInit??rT
MOVS R1,#+1
LDR.N R0,??DataTable33 ;; TIM3
LDR R0,[R0, #+0]
_BLF TIM_ClearFlag,??TIM_ClearFlag??rT
MOVS R2,#+1
MOVS R1,#+1
LDR.N R0,??DataTable33 ;; TIM3
LDR R0,[R0, #+0]
_BLF TIM_ITConfig,??TIM_ITConfig??rT
LDR.N R0,??ENC_Init_0+0x8 ;; TIM2
LDR R0,[R0, #+0]
MOVS R1,#+0
STRH R1,[R0, #+36]
BL ENC_Clear_Speed_Buffer
MOVS R1,#+1
LDR.N R0,??DataTable33 ;; TIM3
LDR R0,[R0, #+0]
_BLF TIM_Cmd,??TIM_Cmd??rT
ADD SP,SP,#+28
POP {PC} ;; return
Nop
DATA
??ENC_Init_0:
DC32 GPIOA
DC32 0x63f
DC32 TIM2
RSEG CODE:CODE:NOROOT(2)
THUMB
ENC_Get_Electrical_Angle:
PUSH {LR}
LDR.N R0,??DataTable33 ;; TIM3
LDR R0,[R0, #+0]
_BLF TIM_GetCounter,??TIM_GetCounter??rT
LDR.N R1,??ENC_Get_Electrical_Angle_0 ;; 0x28f5c2
MULS R0,R1,R0
MOVS R1,#+65536
SDIV R0,R0,R1
LSLS R0,R0,#+16 ;; SignExtS R0,R0,#+16,#+16
ASRS R0,R0,#+16
POP {PC} ;; return
DATA
??ENC_Get_Electrical_Angle_0:
DC32 0x28f5c2
RSEG CODE:CODE:NOROOT(2)
THUMB
ENC_Clear_Speed_Buffer:
MOVS R0,#+0
B.N ??ENC_Clear_Speed_Buffer_0
??ENC_Clear_Speed_Buffer_1:
MOVS R1,#+2
MULS R1,R0,R1
LDR.N R2,??DataTable28 ;; hSpeed_Buffer
MOVS R3,#+0
STRH R3,[R2, R1]
ADDS R0,R0,#+1
??ENC_Clear_Speed_Buffer_0:
CMP R0,#+8
BCC.N ??ENC_Clear_Speed_Buffer_1
LDR.N R0,??DataTable21 ;; bIs_First_Measurement
MOVS R1,#+1
STRB R1,[R0, #+0]
BX LR ;; return
RSEG CODE:CODE:NOROOT(2)
THUMB
ENC_Calc_Rot_Speed:
PUSH {R4-R6,LR}
LDR.N R0,??DataTable21 ;; bIs_First_Measurement
LDRB R0,[R0, #+0]
CMP R0,#+0
BNE.N ??ENC_Calc_Rot_Speed_0
LDR.N R0,??DataTable37 ;; hEncoder_Timer_Overflow
LDRH R0,[R0, #+0]
LDR.N R1,??DataTable33 ;; TIM3
LDR R1,[R1, #+0]
LDRH R1,[R1, #+36]
LDR.N R2,??DataTable37 ;; hEncoder_Timer_Overflow
LDRH R2,[R2, #+0]
LDR.N R3,??DataTable33 ;; TIM3
LDR R3,[R3, #+0]
LDRH R3,[R3, #+36]
LDR.N R4,??DataTable37 ;; hEncoder_Timer_Overflow
MOVS R5,#+0
STRH R5,[R4, #+0]
LDR.N R4,??DataTable33 ;; TIM3
LDR R4,[R4, #+0]
LDRH R4,[R4, #+36]
LDR.N R5,??DataTable37 ;; hEncoder_Timer_Overflow
LDRH R5,[R5, #+0]
CMP R5,#+0
BEQ.N ??ENC_Calc_Rot_Speed_1
LDR.N R4,??DataTable33 ;; TIM3
LDR R4,[R4, #+0]
LDRH R4,[R4, #+36]
LDR.N R5,??DataTable37 ;; hEncoder_Timer_Overflow
MOVS R6,#+0
STRH R6,[R5, #+0]
??ENC_Calc_Rot_Speed_1:
LSLS R0,R0,#+16 ;; ZeroExtS R0,R0,#+16,#+16
LSRS R0,R0,#+16
CMP R0,R2
BEQ.N ??ENC_Calc_Rot_Speed_2
MOVS R1,R3
MOVS R0,R2
??ENC_Calc_Rot_Speed_2:
LDR.N R2,??DataTable33 ;; TIM3
LDR R2,[R2, #+0]
LDRH R2,[R2, #+0]
LSLS R2,R2,#+27
BPL.N ??ENC_Calc_Rot_Speed_3
LSLS R1,R1,#+16 ;; ZeroExtS R1,R1,#+16,#+16
LSRS R1,R1,#+16
LDR.N R2,??ENC_Calc_Rot_Speed_4 ;; hPrevious_angle
LDRSH R2,[R2, #+0]
SUBS R1,R1,R2
LSLS R0,R0,#+16 ;; ZeroExtS R0,R0,#+16,#+16
LSRS R0,R0,#+16
MOVS R2,#+1600
MLS R0,R0,R2,R1
B.N ??ENC_Calc_Rot_Speed_5
??ENC_Calc_Rot_Speed_3:
LSLS R1,R1,#+16 ;; ZeroExtS R1,R1,#+16,#+16
LSRS R1,R1,#+16
LDR.N R2,??ENC_Calc_Rot_Speed_4 ;; hPrevious_angle
LDRSH R2,[R2, #+0]
SUBS R1,R1,R2
LSLS R0,R0,#+16 ;; ZeroExtS R0,R0,#+16,#+16
LSRS R0,R0,#+16
MOVS R2,#+1600
MLA R0,R0,R2,R1
??ENC_Calc_Rot_Speed_5:
MOVS R1,#+200
MULS R0,R1,R0
ASRS R1,R0,#+31
MOVS R2,#+10
MOVS R3,#+0
_BLF ??llmul_t,??rT??llmul_t
MOVS R2,#+1600
MOVS R3,#+0
_BLF ??div64_t,??rT??div64_t
MOVS R0,R2
MOVS R1,R3
B.N ??ENC_Calc_Rot_Speed_6
??ENC_Calc_Rot_Speed_0:
LDR.N R0,??DataTable21 ;; bIs_First_Measurement
MOVS R1,#+0
STRB R1,[R0, #+0]
MOVS R0,#+0
MOVS R1,#+0
LDR.N R2,??DataTable37 ;; hEncoder_Timer_Overflow
MOVS R3,#+0
STRH R3,[R2, #+0]
LDR.N R2,??DataTable33 ;; TIM3
LDR R2,[R2, #+0]
LDRH R4,[R2, #+36]
LDR.N R2,??DataTable37 ;; hEncoder_Timer_Overflow
LDRH R2,[R2, #+0]
CMP R2,#+0
BEQ.N ??ENC_Calc_Rot_Speed_6
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -