#pragma CODE_SECTION(epwm2_isr, "ramfuncs");
#pragma CODE_SECTION(detectZeroCrossingClearPWMTrip , "ramfuncs");
#pragma CODE_SECTION(updateInverterPWM, "ramfuncs");
#pragma DATA_SECTION (Spwm_table,".cio");
uint16_t Spwm_table[200]={0};
__interrupt void epwm2_isr(void){
detectZeroCrossingClearPWMTrip();
updateInverterPWM(Spwm_table[cnt++]);
EPwm2Regs.ETCLR.bit.INT = 1; //写1对ETFLG[INT]状态标志位清零,从而能进行下一次中断
PieCtrlRegs.PIEACK.all=PIEACK_GROUP3;
}
问题如下:
1.因为中断函数epwm2_isr已经使用#pragma CODE_SECTION(epwm2_isr, "ramfuncs")做了定位,函数detectZeroCrossingClearPWMTrip();和updateInverterPWM(Spwm_table[cnt++]);在中断函数中被调用
两个被调用的函数使用和不使用#pragma CODE_SECTION对执行速度有影响不?
2.数组uint16_t Spwm_table【200】 使用和不使用#pragma DATA_SECTION定位是否对程序的执行有影响不?
此外
/* Allocate uninitalized data sections: */
.stack : > RAMM0 PAGE = 1
.ebss : > DRAML0 PAGE = 1
.esysmem : > RAMM1 |DRAML0 PAGE = 1
.cio : >> RAMM1 | DRAML0 PAGE = 1
段cio 是否对stack 和esysmem有影响?
谢谢!