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

28335 TIMER0中断进不去 IFR=0

    28335 TIMER0中断进不去 
    配置应该没错 ,同样的程序, 以前是偶尔进不去  现在是经常进不去  
    程序里相应的DINT之后都EINT了,每次都能读到 CpuTimer0Regs.TCR.bit.TIF = 1;(即发生timer0定时器外设级中断);PIE的相应位的使能和标志位都是1;CPU的IER也是1,但是IFR却是0,IFR应该是1才对吧。而且ram调试,手动让IFR=1之后,就能产生TIMER0中断了。
   同样的程序偶尔能进,偶尔又不能进TIMER0,而且ram调试进去中断之后,不断电,LOAD第二次,就进不去中断了,和解?

Johnson Chen1:

中断退出时有下面语句吗,如果没有请加上。如果有,请将timer0和PIE初始化代码贴上来。

PieCtrlRegs.PIEACK.all = PIEACK_GROUP1;

    28335 TIMER0中断进不去 
    配置应该没错 ,同样的程序, 以前是偶尔进不去  现在是经常进不去  
    程序里相应的DINT之后都EINT了,每次都能读到 CpuTimer0Regs.TCR.bit.TIF = 1;(即发生timer0定时器外设级中断);PIE的相应位的使能和标志位都是1;CPU的IER也是1,但是IFR却是0,IFR应该是1才对吧。而且ram调试,手动让IFR=1之后,就能产生TIMER0中断了。
   同样的程序偶尔能进,偶尔又不能进TIMER0,而且ram调试进去中断之后,不断电,LOAD第二次,就进不去中断了,和解?

miao young:

回复 Johnson Chen1:

有的cpu0初始化:void InitCpuTimers(void){ // CPU Timer 0 // Initialize address pointers to respective timer registers: CpuTimer0.RegsAddr = &CpuTimer0Regs; // Initialize timer period to maximum: CpuTimer0Regs.PRD.all = 15000; // Initialize pre-scale counter to divide by 1 (SYSCLKOUT): CpuTimer0Regs.TPR.all = 0; CpuTimer0Regs.TPRH.all = 0; // Make sure timer is stopped: CpuTimer0Regs.TCR.bit.TSS = 1; CpuTimer0Regs.TCR.bit.TIF = 0; CpuTimer0Regs.TCR.bit.TIE = 1; CpuTimer0Regs.TCR.bit.FREE= 0; CpuTimer0Regs.TCR.bit.SOFT= 0; // Reload all counter register with period value: CpuTimer0Regs.TCR.bit.TRB = 1; // Reset interrupt counters: CpuTimer0.InterruptCount = 0;}主程序中main()中PieVectTable.TINT0 = &Timer0_isr;PieCtrlRegs.PIEIER1.bit.INTx7 = 1; //cputime0PieCtrlRegs.PIECTRL.bit.ENPIE = 1;IER = 0x0000;IFR = 0x0000;IER |= M_INT1 | M_INT3 | M_INT4 | M_INT5 | M_INT9 | M_INT10 | M_INT11;EINT;ERTM;

TIMER0中断程序中有PieCtrlRegs.PIEACK.bit.ACK1 = 1;

    28335 TIMER0中断进不去 
    配置应该没错 ,同样的程序, 以前是偶尔进不去  现在是经常进不去  
    程序里相应的DINT之后都EINT了,每次都能读到 CpuTimer0Regs.TCR.bit.TIF = 1;(即发生timer0定时器外设级中断);PIE的相应位的使能和标志位都是1;CPU的IER也是1,但是IFR却是0,IFR应该是1才对吧。而且ram调试,手动让IFR=1之后,就能产生TIMER0中断了。
   同样的程序偶尔能进,偶尔又不能进TIMER0,而且ram调试进去中断之后,不断电,LOAD第二次,就进不去中断了,和解?

Johnson Chen1:

回复 miao young:

建议楼主用这条语句是一下:PieCtrlRegs.PIEACK.all = PIEACK_GROUP1;

是否有开其它中断?

有的话,屏蔽其它中断试一下。

赞(0)
未经允许不得转载:TI中文支持网 » 28335 TIMER0中断进不去 IFR=0
分享到: 更多 (0)