📄 f2407bldcpwm.asm
字号:
*******************************************************
* TMS320C24xx ANSI C Codegen Version 7.04
*******************************************************
; dspac -i../src -v2xx -iD:/CCStudio_v3.1/c2400/cgtools/include f2407bldcpwm.c C:\DOCUME~1\liuping\LOCALS~1\Temp\f2407bldcpwm.if
; dspopt NOT RUN
; dspcg -o -v2xx -o C:\DOCUME~1\liuping\LOCALS~1\Temp\f2407bldcpwm.if C:\DOCUME~1\liuping\LOCALS~1\Temp\f2407bldcpwm.asm C:\DOCUME~1\liuping\LOCALS~1\Temp\f2407bldcpwm.tmp
.port
.file "f2407bldcpwm.c"
.file "../src\regs240x.h"
.globl _portffff
.globl _portff0f
.globl _port0
.globl _port1
.globl _port2
.globl _port3
.globl _port4
.file "../src\F2407BLDCPWM.h"
.stag .fake0,96
.member _CmtnPointer,0,4,8,16
.member _MfuncPeriod,16,4,8,16
.member _PeriodMax,32,4,8,16
.member _DutyFunc,48,4,8,16
.member _init,64,144,8,16
.member _update,80,144,8,16
.eos
.sym _PWMGEN,0,8,13,96,.fake0
.sym _PWMGEN_handle,0,24,13,16,.fake0
.globl _F2407_BLDC_PWM_Init
.globl _F2407_BLDC_PWM_Update
.file "f2407bldcpwm.c"
.text
.sym _F2407_BLDC_PWM_Init,_F2407_BLDC_PWM_Init,32,2,0
.globl _F2407_BLDC_PWM_Init
.func 20
;>>>> void F2407_BLDC_PWM_Init(PWMGEN *p)
******************************************************
* FUNCTION DEF : _F2407_BLDC_PWM_Init
******************************************************
_F2407_BLDC_PWM_Init:
LF1 .set 0
POPD *+
SAR AR0,*+
SAR AR1,*
LARK AR0,1
LAR AR0,*0+,AR3
.sym _p,-3+LF1,24,9,16,.fake0
.line 2
;>>>> { SCSR1|=0x0008; /* Turn EVB Clocks on */
LARK AR3,28696
LACK 8
OR *
SACL * ,AR2
.line 3
;>>>> T3PR=p->PeriodMax; /* Init Timer 3 period Register */
LARK AR2,-3+LF1
MAR *0+
LAR AR4,* ,AR4
LARK AR5,29955
SSXM
ADRK 2
LAC * ,AR5
SACL *+
.line 4
;>>>> T3CON=BLDCPWM_INIT_STATE; /* Init PWM Operation */
SPLK #-28608,*
.line 6
;>>>> ACTRB=0x0fff;
ADRK 15
SPLK #4095,*
.line 7
;>>>> GPTCONB=0x0000;
LACK 0
SBRK 19
SACL *
.line 8
;>>>> COMCONB=0x0a200;
ADRK 17
SPLK #-24064,* ,AR3
.line 10
;>>>> MCRC=MCRC|0x007E; /* Set up the full compare PWM pins */
LACK 126
ADRK 124
OR *
SACL * ,AR1
EPI0_1:
.line 12
SBRK 2
LAR AR0,*-
PSHD *
RET
.endfunc 31,000000000H,1
.sym _F2407_BLDC_PWM_Update,_F2407_BLDC_PWM_Update,32,2,0
.globl _F2407_BLDC_PWM_Update
.func 33
;>>>> void F2407_BLDC_PWM_Update(PWMGEN *p)
******************************************************
* FUNCTION DEF : _F2407_BLDC_PWM_Update
******************************************************
_F2407_BLDC_PWM_Update:
LF2 .set 0
POPD *+
SAR AR0,*+
SAR AR1,*
LARK AR0,5
LAR AR0,*0+,AR2
.sym _p,-3+LF2,24,9,16,.fake0
.sym _Tmp,1,5,1,32
.sym _GPR0_BLDC_PWM,3,4,1,16
.sym _tab,4,4,1,16
.line 2
;>>>> long Tmp;
;>>>> int GPR0_BLDC_PWM,tab;
;>>>> // unsigned int pwmtemp;
;>>>> // Convert "Period" (Q15) modulation function to Q0
;>>>> // Tmp = (long)p->PeriodMax*(long)p->MfuncPeriod; // Q15 = Q0*Q15
;>>>> // Period = (int)(Tmp>>15); // Q15 -> Q0 (Period)
.line 36
;>>>> GPR0_BLDC_PWM = p->DutyFunc;
;>>>> // pwmtemp = (unsigned int)GPR0_BLDC_PWM+1;
;>>>> // Convert "DutyFunc" or "GPR0_BLDC_PWM" (Q15) duty modulation function to Q0
LARK AR2,-3+LF2
MAR *0+
LAR AR3,* ,AR3
SSXM
ADRK 3
LAC * ,AR2
ADRK 6-LF2
SACL *
.line 39
;>>>> Tmp = (long)p->PeriodMax*(long)GPR0_BLDC_PWM; // Q15 = Q0*Q15
LT * ,AR3
MAR *-
MPY * ,AR2
SBRK 2
SPL *+
SPH *-
.line 49
;>>>> GPR0_BLDC_PWM = (int)(Tmp>>15); // Q15 -> Q0
RSXM
LAC *+,1,AR0
SACH *,AR2
SSXM
LAC *+,1,AR0
OR *,AR2
SACL * ,AR4
.line 50
;>>>> CMPR4 = GPR0_BLDC_PWM;
LARK AR4,29975
SACL *+
.line 51
;>>>> CMPR5 = GPR0_BLDC_PWM;
SACL *+
.line 52
;>>>> CMPR6 = GPR0_BLDC_PWM;
SACL * ,AR1
EPI0_2:
.line 54
SBRK 6
LAR AR0,*-
PSHD *
RET
.endfunc 86,000000000H,5
.end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -