主题:controlSUITE中讨论的其他部件
工具/软件:Code Composer Studio
我使用controlSUITE示例“CLA_SQrt_cpu01”。 调试CLA时,它可以运行到Task1并运行"fResult =__sqrt(fVal);"。 但当我调试整个Task1时,它将停止在Task1代码的底部。 并且“控制台”显示“CPU1 _CLA1:CAN"单步目标程序:(错误-2060 @ 0x0)请求的操作无法在设备运行时完成。 启用设备,然后重试操作。(仿真软件包5.1 .641.0)”。
我想知道如何使CLA运行到ISR中? 非常感谢!
#include "F28x_Project.h"
#include "CLA_SQrt_shared.h"
#define WAITSTEP ASM (" RPT #255 || NOP")
#ifdef __cplusplus
#pragma data_section("CpuToCla1MsgRAM");
浮点fVal;//输入
#pragma data_section("Cla1ToCpuMsgRAM");
浮点fResult;//估计结果
#否则
#pragma data_section(fVal,"CpuToCla1MsgRAM");
浮点fVal;//输入
#pragma data_section(fResult,"Cla1ToCpuMsgRAM";
浮点fResult;//估计结果
#endif //__cplusplus
void CLA_RunTest(void);
void CLA_configClaMemory (void);
void CLA_initCpu1Cla1 (void);
__interrupt void cla1Isr1();
__interrupt void cla1Isr2();
__interrupt void cla1Isr3();
__interrupt void cla1Isr4();
__interrupt void cla1Isr5();
__interrupt void cla1Isr6();
__interrupt void cla1Isr7();
__interrupt void cla1Isr8();
Void主(void)
{
InitSysCtrl();
色调;
InitPieCtrl();
IER = 0x0000;
IFR = 0x0000;
InitPieVectorTable();
CLA_configClaMemory();
CLA_initCpu1Cla1();
EINT;//启用全局中断INTM
ERTM;//启用全局实时中断DBGM
CLA_RunTest();
}
void CLA_RunTest (void)
{
fVal =9;
Cla1ForceTask1();
}
void CLA_configClaMemory (void)
{
extern UINT32_t Cla1funcsRunStart,Cla1funcsLoadStart,Cla1funcsLoadSize;
EALLOW;
#ifdef _flash
//
//将代码从闪存复制到RAM
//
memcpy(UINT32_t *)&Cla1funcsRunStart,(UINT32_t *)&Cla1funcsLoadStart,
(UINT32_t)&Cla1funcsLoadSize);
#endif //_flash
MemCfgRegs.MSGxINIT.bit.init_CLA1TOCPU = 1;
While (MemCfgRegs.MSGxINITDONE.bit.INITDONE_CLA1TOCPU!= 1){};
MemCfgRegs.MSGxINIT.bit.init_CPUTOCLA1 = 1;
while (MemCfgRegs.MSGxINITDONE.bit.INITDONE_CPUTOCLA1 !=1){};
MemCfgRegs.LSxMSEL.bit.MSEL_LS5 = 1;
MemCfgRegs.LSxCLAPGM.bit.CLAPGM_LS5 = 1;
MemCfgRegs.LSxMSEL.bit.MSEL_LS0 = 1;
MemCfgRegs.LSxCLAPGM.bit.CLAPGM_LS0 = 0;
MemCfgRegs.LSxMSEL.bit.MSEL_LS1 = 1;
MemCfgRegs.LSxCLAPGM.bit.CLAPGM_LS1 = 0;
EDIS;
}
void CLA_initCpu1Cla1 (void)
{
EALLOW;
Cla1Regs.MVECT1 =(uint16_t)(&Cla1Task1);
Cla1Regs.MVECT2 =(uint16_t)(&Cla1Task2);
Cla1Regs.MVECT3 =(uint16_t)(&Cla1Task3);
Cla1Regs.MVECT4 =(uint16_t)(&Cla1Task4);
Cla1Regs.MVECT5 =(uint16_t)(&Cla1Task5);
Cla1Regs.MVECT6 =(uint16_t)(&Cla1Task6);
Cla1Regs.MVECT7 =(uint16_t)(&Cla1Task7);
Cla1Regs.MVECT8 =(uint16_t)(&Cla1Task8);
Cla1Regs.MCTL.Bit.IACKE = 1;
Cla1Regs.MIER.ALL = 0x00FF;
PieVectorTable.CLA1_INT =&cla1Isr1;
PieVectorTable.CLA1_2_INT =&cla1Isr2;
PieVectorTable.CLA1_3_INT =&cla1Isr3;
PieVectorTable.CLA1_4_INT =&cla1Isr4;
PieVectorTable.CLA1_5_INT =&cla1Isr5;
PieVectorTable.CLA1_6_INT =&cla1Isr6;
PieVectorTable.CLA1_7_INT =&cla1Isr7;
PieVectorTable.CLA1_8_INT =&cla1Isr8;
PieCtrlRegs.PIEIER11.ALL = 0xFFFF;
IER ||(M_INT11);
}
__interrupt void cla1Isr1 ()
{
浮点R=0;
r=fResult;
PieCtrlRegs.PIEACG.ALL = M_INT11;
}
__interrupt void cla1Isr2 ()
{
ASM (" ESTOP0");
}
__interrupt void cla1Isr3 ()
{
ASM (" ESTOP0");
}
__interrupt void cla1Isr4 ()
{
ASM (" ESTOP0");
}
__interrupt void cla1Isr5 ()
{
ASM (" ESTOP0");
}
__interrupt void cla1Isr6 ()
{
ASM (" ESTOP0");
}
__interrupt void cla1Isr7 ()
{
ASM (" ESTOP0");
}
__interrupt void cla1Isr8 ()
{
PieCtrlRegs.PIEACG.ALL = M_INT11;
ASM (" ESTOP0");
}
#include "CLA_SQrt_shared.h"
__interrupt void Cla1Task1 (void)
{
fResult =__sqrt(fVal);
}
__interrupt void Cla1Task2 ( void )
{
}
__interrupt void Cla1Task3 (void)
{
}
__interrupt void Cla1Task4 ( void )
{
}
__interrupt void Cla1Task5 (void)
{
}
__interrupt void Cla1Task6 (void)
{
}
__interrupt void Cla1Task7 (void)
{
}
__interrupt void Cla1Task8 (void)
{
}