Ti工程师您好:
我使用的是DSP28069,工程使用更改中断优先级的功能,把F2806x_SWPrioritizedDefaultIsr.c、F2806x_SWPrioritizedPieVect.c、F2806x_SWPrioritizedIsrLevels.h这几个文件替换后,程序运行的工程中会随机的进入SCIRXINTA_ISR中断,我确定没有使能中断,
PieCtrlRegs.PIEIER1.bit.INTx1= 0;并且也没有用到这个中断。请问这个问题怎么解决。
#if (G91PL != 0)
__interrupt void SCIRXINTA_ISR(void) // SCI-A
{
// Set interrupt priority:
volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER9.all;
IER |= M_INT9;
IER &= MINT9; // Set "global" priority
PieCtrlRegs.PIEIER9.all &= MG91; // Set "group" priority
PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts
EINT;
// Insert ISR Code here…….
// Restore registers saved:
DINT;
PieCtrlRegs.PIEIER9.all = TempPIEIER;
// Next two lines for debug only to halt the processor here
// Remove after inserting ISR Code
__asm (" ESTOP0");
for(;;);
}
#endif
期待您的回复,谢谢
Green Deng:“更改中断优先级”是怎么做的?C2000系列是不支持更改中断优先级的,只能通过中断嵌套的方式达到更改中断优先级的目的。可以参考:
processors.wiki.ti.com/…/Interrupt_Nesting_on_C28x
Ti工程师您好:
我使用的是DSP28069,工程使用更改中断优先级的功能,把F2806x_SWPrioritizedDefaultIsr.c、F2806x_SWPrioritizedPieVect.c、F2806x_SWPrioritizedIsrLevels.h这几个文件替换后,程序运行的工程中会随机的进入SCIRXINTA_ISR中断,我确定没有使能中断,
PieCtrlRegs.PIEIER1.bit.INTx1= 0;并且也没有用到这个中断。请问这个问题怎么解决。
#if (G91PL != 0)
__interrupt void SCIRXINTA_ISR(void) // SCI-A
{
// Set interrupt priority:
volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER9.all;
IER |= M_INT9;
IER &= MINT9; // Set "global" priority
PieCtrlRegs.PIEIER9.all &= MG91; // Set "group" priority
PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts
EINT;
// Insert ISR Code here…….
// Restore registers saved:
DINT;
PieCtrlRegs.PIEIER9.all = TempPIEIER;
// Next two lines for debug only to halt the processor here
// Remove after inserting ISR Code
__asm (" ESTOP0");
for(;;);
}
#endif
期待您的回复,谢谢
user4129436:
回复 Green Deng:
您好:可能我对这个理解的不是很充分,我是按照controlSUITE中的sw_prioritized_interrupts这个例程配置的,我就是把F2806x_SWPrioritizedDefaultIsr.c、F2806x_SWPrioritizedPieVect.c、F2806x_SWPrioritizedIsrLevels.h这几个文件替换后实现的,应该和您说的意思是一样的,正常配置的中断可以实现,就是随机的进入interrupt void SCIRXINTA_ISR这个中断。我担心哪里配置的不合理,以后还会进入其他中断,导致以后程序不稳定。希望您能给指点一下,谢谢