Other Parts Discussed in Thread: SFRA

如图所示,上述是我用于测试SFRA的代码,现在对于plant的Bode图已经能正确绘制,然而当我加入闭环控制时,程序却跑飞了。
具体而言,该项目的f28004x_flash_lnk_eabi.cmd是从SFRA的例程example1_stb_f28004x_f32_eabi中直接复制而来,因此它理应运行在Flash上。
根据该cmd文件,dclfuncs应该在初始化阶段被移动到RAM中,查看编译后的.map文件也证明了这一点。


调试时的Memory Allocate也证明了这一点:

当我切换到ClosedLoop_Mode时,程序运行到DCL_runPI_C2函数时,程序立刻跳转到了interrupt_illegalOperationHandler
if (ClosedLoop_Mode == 1)
{
Uref_pu = Uref / U_NOMINAL;
Uref_pu_Inject = SFRA_F32_inject(Uref_pu);
// Duty_pu = DCL_runPI_C1(&Vout_PI, Uref_pu, Uo_pu);
Duty_pu = DCL_runPI_C2(&Vout_PI, Uref_pu_Inject, Uo_pu);
EPWM_setCounterCompareValue(myEPWM1_BASE, EPWM_COUNTER_COMPARE_A,
(1.f - Duty_pu) * EPWM_getTimeBasePeriod(myEPWM1_BASE));
SFRA_F32_collect(&Duty_pu, &Uo_pu);
}

我应该如何修改才能使其正常工作?
中断逻辑如下:
ePWM1向上向下计数,频率20kHz, 当CNT达到TBPRD时触发ADCA采样,ADCA的SOC0转换完毕触发控制中断。