TI中文支持网
TI专业的中文技术问题搜集分享网站

DSP28035中断何时运行?是不是不必执行到main函数的for循序?

在main中,使能了中断,

main

{

初始化;

…..

PieVectTable.EPWM2_INT = &EPWM2_TR;

 PieCtrlRegs.PIEIER3.bit.INTx2 = 1; 

IER = M_INT2|M_INT3|M_INT1|M_INT9;

EPwm2Regs.ETSEL.bit.INTSEL = ET_CTR_PRD;//中断使能
EPwm2Regs.ETSEL.bit.INTEN = 1;
EPwm2Regs.ETPS.bit.INTPRD = ET_1ST;

其它初始化;

……

for(;;)

{

}

}

我想问下,正常的配置中断,最后中断只要使能了,是不是就中断程序就开始运行了,即使main函数还没有执行到for(;;)时?

Susan Yang:中断使能了,也是要达到中断的设置条件才会进入中断,开始运行中断程序

在main中,使能了中断,

main

{

初始化;

…..

PieVectTable.EPWM2_INT = &EPWM2_TR;

 PieCtrlRegs.PIEIER3.bit.INTx2 = 1; 

IER = M_INT2|M_INT3|M_INT1|M_INT9;

EPwm2Regs.ETSEL.bit.INTSEL = ET_CTR_PRD;//中断使能
EPwm2Regs.ETSEL.bit.INTEN = 1;
EPwm2Regs.ETPS.bit.INTPRD = ET_1ST;

其它初始化;

……

for(;;)

{

}

}

我想问下,正常的配置中断,最后中断只要使能了,是不是就中断程序就开始运行了,即使main函数还没有执行到for(;;)时?

user3900194:

回复 Susan Yang:

达到中断的设置条件才会进入中断,是不是,可以认为:不用执行到main函数的for循环后,在运行中断?或者说,main函数的for循序与是否运行中断程序无关?

在main中,使能了中断,

main

{

初始化;

…..

PieVectTable.EPWM2_INT = &EPWM2_TR;

 PieCtrlRegs.PIEIER3.bit.INTx2 = 1; 

IER = M_INT2|M_INT3|M_INT1|M_INT9;

EPwm2Regs.ETSEL.bit.INTSEL = ET_CTR_PRD;//中断使能
EPwm2Regs.ETSEL.bit.INTEN = 1;
EPwm2Regs.ETPS.bit.INTPRD = ET_1ST;

其它初始化;

……

for(;;)

{

}

}

我想问下,正常的配置中断,最后中断只要使能了,是不是就中断程序就开始运行了,即使main函数还没有执行到for(;;)时?

Rayna Wang:

回复 user3900194:

程序执行顺序是:
从main开始位置顺序执行到for loop,然后一直在for loop中循环,如果有中断触发信号产生,会先执行中断程序,结束后返回原来位置继续执行for loop 中的代码。

希望对你有所帮助。

在main中,使能了中断,

main

{

初始化;

…..

PieVectTable.EPWM2_INT = &EPWM2_TR;

 PieCtrlRegs.PIEIER3.bit.INTx2 = 1; 

IER = M_INT2|M_INT3|M_INT1|M_INT9;

EPwm2Regs.ETSEL.bit.INTSEL = ET_CTR_PRD;//中断使能
EPwm2Regs.ETSEL.bit.INTEN = 1;
EPwm2Regs.ETPS.bit.INTPRD = ET_1ST;

其它初始化;

……

for(;;)

{

}

}

我想问下,正常的配置中断,最后中断只要使能了,是不是就中断程序就开始运行了,即使main函数还没有执行到for(;;)时?

user3900194:

回复 Rayna Wang:

我现在的情况是,从main开始执行,在main之后和for loop之前有很长的时间延时delay,并且所有中断使能已经开始。发现的现象是在没有到for loop之前,就产生中断了,这是为啥?因为main和for loop之间的delay时间太长了?

在main中,使能了中断,

main

{

初始化;

…..

PieVectTable.EPWM2_INT = &EPWM2_TR;

 PieCtrlRegs.PIEIER3.bit.INTx2 = 1; 

IER = M_INT2|M_INT3|M_INT1|M_INT9;

EPwm2Regs.ETSEL.bit.INTSEL = ET_CTR_PRD;//中断使能
EPwm2Regs.ETSEL.bit.INTEN = 1;
EPwm2Regs.ETPS.bit.INTPRD = ET_1ST;

其它初始化;

……

for(;;)

{

}

}

我想问下,正常的配置中断,最后中断只要使能了,是不是就中断程序就开始运行了,即使main函数还没有执行到for(;;)时?

Rayna Wang:

回复 user3900194:

实际上,中断产生时间和for loop没有直接关系。如果中断条件满足了,就会产生中断。

我一般是在接近for loop循环时enable EPWM时钟,所以时序是就是之前所说的那样。

在main中,使能了中断,

main

{

初始化;

…..

PieVectTable.EPWM2_INT = &EPWM2_TR;

 PieCtrlRegs.PIEIER3.bit.INTx2 = 1; 

IER = M_INT2|M_INT3|M_INT1|M_INT9;

EPwm2Regs.ETSEL.bit.INTSEL = ET_CTR_PRD;//中断使能
EPwm2Regs.ETSEL.bit.INTEN = 1;
EPwm2Regs.ETPS.bit.INTPRD = ET_1ST;

其它初始化;

……

for(;;)

{

}

}

我想问下,正常的配置中断,最后中断只要使能了,是不是就中断程序就开始运行了,即使main函数还没有执行到for(;;)时?

user3900194:

回复 Rayna Wang:

恩,您说的和我现在的情况差不多,谢谢,您的解答,有你的这个结论就好了“中断产生时间和for loop没有直接关系”。

赞(0)
未经允许不得转载:TI中文支持网 » DSP28035中断何时运行?是不是不必执行到main函数的for循序?
分享到: 更多 (0)