在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没有直接关系”。