This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] 编译器/TMS320F28027F:使用数字电源库中的 DLOG_4ch 函数时出现问题

Guru**** 2046040 points
Other Parts Discussed in Thread: CONTROLSUITE, C2000WARE-DIGITALPOWER-SDK
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/800268/compiler-tms320f28027f-problem-when-using-dlog_4ch-function-from-digital-power-library

器件型号:TMS320F28027F
主题中讨论的其他器件:controlSUITEC2000WARE-DIGITALPOWER-SDK

工具/软件:TI C/C++编译器

尊敬的 TI 成员:

我有一个运行 ADC (4ch)的代码、并将其保存在具有函数 DLOG_4ch 的缓冲器中。 我根据 controlSUITE 中 TI 提供的模板项目(C:\ti\controlSUITE\development_kits\TemplateProjects)创建了我的项目、并且我已经按照指令基于数字电源库手册 v3.5来实现 ADC_4ch 和 DLOG_4ch。 我已经能够运行此代码、但是有2个主要问题我还没有找到答案:

1) 1)如何更改.out 文件的名称? 有时、当出现错误时、会显示"Project_name.out"

2) 2)如何调用 ISR (用 asm 编写)中的.c 函数?  如果我想稍后实现我自己的.c 函数、而这些函数不是 DPlib 库的一部分、我是否需要在汇编语言中编写它们? 因为到目前为止、被调用的数字电源库中的每个函数都位于.asm 中。 下面附上了 ISR 代码。  



我的 ISR 代码:


;------------------------------------------------------------------
;文件:{3ph_PWM_ACDC}-DPL-ISR.asm
;
说明:{3ph_PWM_ACDC}-DPL-ISR.asm包含系统的 ISR
;它还包含所有宏的初始化例程
;正在系统中用于 CLA 和 C28x 宏
;
;版本:请参阅{3ph_PWM--------------


;在汇编语言中提供外围设备地址可见性
.cdecls C、list、"PeripheralHeaderIninclude.h"

;包含 C 头文件-设置 INCR_BUILD 等(用于条件编译)
.cdecls C、NOLIST、"3ph_PWM_ACDC-Settings.h"

;包含系统正在使用的 Power Library Maco 的文件
。include "PWMDRV_1asm=
====================================================================================================================================================================================================================================================================



;数字电源库- Initailization 例程
;====================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================

;标签到 DP 初始化函数
.def _DPL_Init

;指针初始化的虚拟变量
ZeroNet.usect "ZeroNet_Section",2,1;输出终端1

.text
_DPL_Init:
ZAPA
MOVLXAR0,#ZeroNet
MOVL*XAR0,ACC

;初始化此处使用的所有 DP 库宏
;---
.if (INCR_BUILD = 1)
PWMDRV_1ch_init 1;PWM1A
.endif
;---------------
ADCDRV_4ch_init 0、1、2、3;ADCDRV_4ch 初始化
DLOG_4ch_init 1;DLOG_4CH 初始化
LRETR

;-------------------------------------------------------

;数字电源库-中断服务例程

.sect "ramfuncs"
;DP ISR 运行函数的标签
.def_DPL_ISR

_DPL_ISR:
;完整上下文保存-将任何不受保护的寄存器压入栈
推入AR1H:AR0H
推入 XAR2
推入XAR3
推入XAR4
推入XAR5
推入XAR6
推入XAR7
推入 XAR7推入
SPM0;设置 C28模式
CLRCAMODE
CLRCPAGE0、OVM
;CLRCINTM;清除中断屏蔽-如果 ISR 不可嵌套,则进行注释
;---------------

;调用 DP 库模块

;-----
.if (INCR_BUILD = 1)
PWMDRV_1CH 1;PWM1A
.endif
;---------------
ADCDRV_4ch 0、1、2、3;运行 ADCDRV_4ch
DLOG_4ch 1;运行 DLOG_4CH 宏
;-------------------------------------------------------
;在退出

.if (EPWMn_DPL_ISR=1)

.if (EPWM1)
MOVWDP、#_EPwm1Regs.ETCLR
MOV@




@




@ EPwm1Regs.ETCLR、#0x01;清除 EPWM1 Int 标志.endif (EPWM1 .if);EPWCMOLD# EEPW2REP.EVM.EEPW01.EEP2RM2.EPW01.EVM_EPW01.EVM_EPM2REP.EEPW01.EPWLD.EPW01.EPWMER;EPWEPWMER、EP2EPWMER 标志0xEPWMER、EPWMER、EP2EPW01.EPWMER、EPWEPWMER、EPWMER EPW01.EPW01.EPWMER、EPWEPWME.EPWMER、EPWME.EPW01.
EPWM3

.IF (EPWM4)
MOVWDP、#_EPwm4Regs.ETCLR
MOV@




@




@_EPwm4Regs.ETCLR、#0x01;清除 EPWM4 Int 标志.endif (EPWM5) MORegDP、#EPwm5Regs.ETCLR、#EEPWTM1.EVM.EVM1、EPWEPWTM1.MOVW = EVM.EVM6、EPWEPW01.M01.MOVW、EPWEPWEPW01.MOVW、EPWLMVW OR.EVM.EVM.EVM.EVM_EVM.EVM.EVM6、EPW01.MOVW = EPW01.MOVW、EPW01.MOVW、EPWEPW01.MOVW = EPWEPW01.MOVW =


EPWEPWEPWEPWEPWEPWEPWEPW确认








中断组3 MOV @@
@_PieCtrlRegs.PIEACK、#0x4 .endif;EPWMn_ISR .if (ADC_DPL_ISR=1);ISR 由 ADC MOVW DP#_AdcRegs.ADCCLR 触发的情况---- 0x1----/LMGPRC.E------------ 0x1---------------------------------------------------------- 0xM--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------。



;完整上下文恢复
;SETCINTM;设置 INTM 以保护上下文恢复
POPXT
POPXAR7
POPXAR6
POPXAR5
POPXAR4
POPXAR3
POPXAR2
POPAR1H:AR0H
IRET;从中断
.end 返回

;文件结束

工程文件图片:

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    1..out 文件可以更改、您可以右键单击工程并转至属性、在 C2000链接器->基本选项->您可以指定自定义.out 名称、默认情况下是工程名称

    2.您不能从汇编语言调用 C 语言、也可以从 C 语言调用汇编语言。我将此过程记录在 www.ti.com/.../spruhz5a.pdf 第3.6节中

    3. 2019年、您可能希望开始使用 C 语言编写代码、请查看我们最新的 C2000Ware-DigitalPower-SDK、它是最新维护的 DP 配套资料。