飞思卡尔MPC5674芯片,PIT定时中断
本帖最后由 coffey0304 于 2013-01-18 12:34:41 编辑 最近在用飞思卡尔MPC5674芯片,来测试PIT定时中断,
main函数如下。当定时器定时满的时候,中断标志位是为1的,且中断使能位也置1了,
而中断服务程序却死活没有执行。
望大虾支招,跪谢!
void INTC_ISR_Response_1(void)/*中断服务程序*/
{
SIU.GPDO[179].B.PDO =!(SIU.GPDO[179].B.PDO);
}
void main(void)
{
/*DIO*/
SIU.PCR[179].B.PA = 0x00;
SIU.PCR[179].B.IBE = 0;
SIU.PCR[179].B.OBE = 1;
SIU.GPDO[179].B.PDO = 1;
/*Watch dog,be needed ????*/
SWT.MCR.B.STP=1;
SWT.MCR.B.FRZ=1;
SWT.MCR.B.WEN=0;
/*Interrupt Controller*/
INTC.MCR.B.HVEN = 0; // Soft vector mode
INTC.MCR.B.VTES = 0; // 4 byte offset between entries
INTC.EOIR.R = 0;
INTC.CPR.B.PRI = 0;
INTC_InitINTCInterrupts();
INTC_InstallINTCInterruptHandler( INTC_ISR_Response_1,301, 15 );
/*PIT timer*/
PIT.CH[0].LDVAL.R=1000;
PIT.CH[0].TFLG.B.TIF=1;
PIT.CH[0].TCTRL.B.TIE=1;/* Interrupt enabled */
PIT.CH[0].TCTRL.B.TEN=1;/* Timer enabled */
while(1)
{
}
} PIT INTC 中断
[解决办法]
PIT初始化没问题,但是你的中断控制器初始化和文档给出的流程不一定一致。由于你调用了函数,不确定你的流程是不是正确。这是标准流程,请仔细核对。
interrupt_request_initialization:
configure VTES and HVEN in INTC_MCR
configure VTBA in INTC_IACKR
raise the PRIn fields in INTC_PSRn
set the enable bits or clear the mask bits for the peripheral interrupt requests
lower PRI in INTC_CPR to zero
enable processor recognition of interrupts