为什么DSP程序每次进入中断之后需要再开全局中断???
为什么DSP程序每次进入中断之后需要再开全局中断??? 你肯定是进入后关了全局中断为了下次能进肯定要打开 zhangmangui 发表于 2013-8-15 21:07 static/image/common/back.gif你肯定是进入后关了全局中断为了下次能进肯定要打开
看中断资料的时候。。。
2.中断函数
interrupt void T1PINT_ISR(void)
{
...........
...........
EvaRegs.EVAIFRA.bit.T1PINT=1; //清除中断标志位
PieCtrlRegs.PIEACK.bit.ACK2=1;//响应同组中断
//Here is a bug
EINT; //开全局中断
}
最后加上了开全局中断,在代码中删除EINT发现也能再次进入中断。所以不太懂要加上EINT。。。。
是为了保证一定能再次进入中断?请教。。。。 asas1235813 发表于 2013-8-16 09:07 static/image/common/back.gif
看中断资料的时候。。。
2.中断函数
interrupt void T1PINT_ISR(void)
你的代码如果是这样的话这句完全可以不加 asas1235813 发表于 2013-8-16 09:07 static/image/common/back.gif
看中断资料的时候。。。
2.中断函数
interrupt void T1PINT_ISR(void)
像这样就可以再次打开
interrupt void SCIRXINTA_ISR(void) // SCI-A
{
unsigned char i; //ReceivedAChar;
DINT;//关闭总中断
// 数据接收
//temp=SciaRegs.SCIFFRX.bit.RXFIFST; //数据长度
for(i=0;i<5;i++)
{
Receviced_data = SciaRegs.SCIRXBUF.all;
//ReceivedAChar = SciaRegs.SCIRXBUF.all;
//Receviced_data = ReceivedAChar; //接收串口数据
Receviced_data = '\0';
}
flag=1; //表示接受完成
SciaRegs.SCIFFRX.bit.RXFIFORESET=0; //将FIFO指针复位为0
for(i=0;i<20;i++); //延时
SciaRegs.SCIFFRX.bit.RXFIFORESET=1; //退出复位状态
SciaRegs.SCIFFRX.bit.RXFFINTCLR = 1; // 清除接收中断标志
SciaRegs.SCIFFRX.bit.RXOVF_CLR = 1; //清除溢出中断标志
PieCtrl.PIEACK.all |= M_INT9; //响应中断
EINT; //开总中断
}
zhangmangui 发表于 2013-8-16 09:11 static/image/common/back.gif
像这样就可以再次打开
interrupt void SCIRXINTA_ISR(void) // SCI-A
{
原来是这样,懂了,嘿嘿菜鸟一枚 多谢版主解答 :lol asas1235813 发表于 2013-8-16 09:15 static/image/common/back.gif
原来是这样,懂了,嘿嘿菜鸟一枚 多谢版主解答
共同进步 相互帮助
页:
[1]