TI中文支持网
TI专业的中文技术问题咨询交流网站

关于中断向量表文件的问题

1.在IPCGR寄存器实现核间中断的过程中未编写中断向量表文件,也可以实现核间的中断,请问核间中断是不需要配置吗?程序里中断映射到INT4

2.在使用定时器中断,想要实现每隔2秒发送一次数据时,参考K1例程中带有中断向量表文件,请问这两种中断如何融合到一个工程里呢?我尝试把定时器的例程中向量表文件删除也可以正常使用,那这个文件的意义在哪?

3.想要实现定时器中断每隔两秒通过EMIF口发送一个数据,发送的函数是直接写在中断服务函数里吗?还是有其他实现方式?

user6109135:

还想问一下,这个汇编的中断向量表文件是如何被识别的呢?文件名有特定命名要求吗?

Nancy Wang:

回复 user6109135:

1、都需要配置的。有可能你看到的工程是调用的封装好的函数。
2、在K1例程已有的中断向量表中添加IPC ISR与中断号的配置。
3、可以的。
4、通过ISTP指向中断向量表。以下文档可以参考看一下。
www.ti.com/…/sprugh7.pdf

user6109135:

回复 Nancy Wang:

您好,如果想完成每隔2秒通过EMIF口向外发送一个数据,应该用定时器的哪种模式?

Nancy Wang:

回复 user6109135:

使用64bit模式就可以了。

user6109135:

回复 Nancy Wang:

您好,我使用了C:\Program Files\Texas Instruments\pdk_C6678_1_0_0_16\packages\ti\csl\example\timer这个例程,我想利用GP-TIMER得到想要的定时中断,于是,我改写了test_gp_time()这个函数,修改如下:

TimeCountMode 改为 CSL_TMR_ENAMODE_CONT;

hwSetup.tmrTimerPeriodLo = 0x3B9ACA00;// 即十进制的1000000000

hwSetup.tmrTimerPeriodLo = 0x00;

为了能够不停产生中断,我把while(timeISRCounter !=1);去掉,

然后为了能查看每次产生的中断,我修改OStickISR(void)

{timeISRCounter++ ;

printf("The timeISRCounter is %d.\n" , timeISRCounter);
}加了这句printf语句

默认的是内部时钟,是6分频,则应该是每6秒产生一次中断,但是我在运行的时候,发现瞬间就输出了将近100条printf语句,也就是说没有达到设置的中断周期间隔。应该如何设置呢?

Nancy Wang:

回复 user6109135:

hwSetup.tmrTimerPeriodLo = 0x3B9ACA00; // 即十进制的1000000000

hwSetup.tmrTimerPeriodLo = 0x00;

这边是不是写错了?tmrTimerPeriodLo 赋值两次。

user6109135:

回复 Nancy Wang:

/************************************************************************************ INTC related code ***********************************************************************************//* Open INTC */vectId = CSL_INTC_VECTID_12;tmrIntcHandle = CSL_intcOpen(&tmrIntcObj, CSL_GEM_TINTLN, &vectId, NULL);
/* Bind ISR to Interrupt */EventRecord.handler = (CSL_IntcEventHandler)&TimerInterruptHandler;EventRecord.arg= (void *)CSL_GEM_TINTLN;CSL_intcPlugEventHandler(tmrIntcHandle, &EventRecord);/* Event Enable */CSL_intcHwControl(tmrIntcHandle, CSL_INTC_CMD_EVTENABLE, NULL);

观察到程序执行到这一部就跑飞了,进入了csl_intcDispatcher

user6109135:

回复 Nancy Wang:

hwSetup.tmrTimerPeriodLo =0x3B9ACA00;hwSetup.tmrTimerPeriodHi = 0x00;

是这样的,上面打字打错了

user6109135:

回复 Nancy Wang:

会进中断服务程序一次,然后就进入了csl_intcDispatcher

user6109135:

回复 Nancy Wang:

CSL_intcHwControl(tmrIntcHandle, CSL_INTC_CMD_EVTENABLE, NULL);
在使能的这一步就跑飞了,程序其他地方都没改,这个程序是不需要中断向量表的吧,我看提供的程序里没有

赞(0)
未经允许不得转载:TI中文支持网 » 关于中断向量表文件的问题
分享到: 更多 (0)