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

中断中的中断

我设置一个周期性定时的定时器T2CCP0,在中断中开启另两个定时器T3CCP0和T3CCP1的捕捉模式捕捉高电平可以吗?

现在输入端用示波器看有电平变化,但是就是进不去中断,请问为什么呢

Sun DaSheng Sun:

现在设置了中断优先级了,第一个定时器优先级1,后两个0,为什么还是进不去内层中断

Sun DaSheng Sun:

回复 Sun DaSheng Sun:

设置优先级的代码

IntPriorityGroupingSet(0x03);

……

IntPrioritySet(INT_TIMER2A, 1<<5);

……

IntPrioritySet(INT_TIMER3A, 0<<5);

……

IntPrioritySet(INT_TIMER3B, 0<<5);

对不对呢?为什么要搞这个<<5  ?

xyz549040622:

回复 Sun DaSheng Sun:

为什么要左移5,这是由最低优先级决定的,你看看这个的代码是怎么写的就知道了

Sun DaSheng Sun:

回复 xyz549040622:

请问应该怎么设置呢? 设置优先级的代码能麻烦您给说一下吗

Sun DaSheng Sun:

回复 Sun DaSheng Sun:

我现在不知道这么设置优先级对不对

Michael Sun:

回复 Sun DaSheng Sun:

寄存器的高3位决定优先级。

数字越小优先级越高

Sun DaSheng Sun:

回复 Michael Sun:

您看我的设置对不对呢?

这样设置T2CCP0中断的时候能不能进T3CCP0和T3CCP1的中断呢

xyz549040622:

回复 Sun DaSheng Sun:

\verbatim
//! //
//! // Set the UART 0 interrupt priority to the lowest priority.
//! //
//! IntPrioritySet(INT_UART0, 0xE0);
//!
//! //
//! // Set the USB 0 interrupt priority to the highest priority.
//! //
//! IntPrioritySet(INT_USB0, 0);
//!
//! \endverbatim
//!
//! \return None.
//
//*****************************************************************************
void
IntPrioritySet(uint32_t ui32Interrupt, uint8_t ui8Priority)
{uint32_t ui32Temp;//// Check the arguments.//ASSERT((ui32Interrupt >= 4) && (ui32Interrupt < NUM_INTERRUPTS));//// Set the interrupt priority.//ui32Temp = HWREG(g_pui32Regs[ui32Interrupt >> 2]);ui32Temp &= ~(0xFF << (8 * (ui32Interrupt & 3)));ui32Temp |= ui8Priority << (8 * (ui32Interrupt & 3));HWREG(g_pui32Regs[ui32Interrupt >> 2]) = ui32Temp;
}

0xE0为最低优先级,0为最高优先级,你这么设置2的中断低于3的中断,明显不可以

Sun DaSheng Sun:

回复 xyz549040622:

 我希望的就是3的中断等级更高,可以随时进入中断

赞(0)
未经允许不得转载:TI中文支持网 » 中断中的中断
分享到: 更多 (0)