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

求组定时器0中断

新手学生党,照着书想利用CpuTimer0的周期中断信号开关LED灯的例程。初始设置灯不亮。可是程序运行后灯就一直亮,我想是不是只受到了一次中断信号。想请教这种情况怎么办?

主程序和中断子程序如下:

void main(void)
{
InitSysCtrl();
InitGpio();
GpioDataRegs.GPADAT.all = 0xFFFFFFFF;//初始化,引脚配置

InitCpuTimers();
ConfigCpuTimer(&CpuTimer0,40,1000000); //cpu定时器配置

InitPieCtrl();
InitPieVectTable();
PieCtrlRegs.PIEIER1.bit.INTx7 =1;//PIE中断使能

DINT;
IER = 0x0000;
IFR = 0x0000; //CPU中断初始化
IER|=M_INT1;
EINT;
ERTM; //开CPU中断、全局中断、实时中断
StartCpuTimer0();//启动定时器
while(1)
{};
}

interrupt void TINT0_ISR(void) // CpuTimer0中断子程序
{ CpuTimer0.InterruptCount++;

if(CpuTimer0.InterruptCount==1)
{
GpioDataRegs.GPADAT.all = 0xFFFFFFFD;//灯亮
}
if(CpuTimer0.InterruptCount==2)
{
GpioDataRegs.GPADAT.all = 0xFFFFFFFF;//灯灭
CpuTimer0.InterruptCount=0;
}
CpuTimer0Regs.TCR.bit.TIF=1;//清除定时器标志位
PieCtrlRegs.PIEACK.all=0;//清除PIE应答位
asm (" ESTOP0");
for(;;);
}

Yuyang Cai:

回复 mangui zhang:

我自己解决了,原来是中断子程序有两个问题。。

1.清楚PIE应答位应该是PieCtrlRegs.PIEACK.all=1;

2.asm (" ESTOP0");

for(;;);这两行应该删掉

泪奔。。终于找到原因了

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