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

DSP6678在跑BIOS操作系统时,进入不了Timer中断

你好,本人在核7中跑BIOS系统,想使用一个定时器,但是按照如下设置,定时器无法进入,希望可以指导一下,感谢。

定时器设置如下图所示:

系统中Isr_Timer定时器代码如下:

static uint32_t g_TimerCnt=0;
Void Isr_Timer(Uint32 arg0)
{
	g_TimerCnt++;
}

Isr_Timer程序初始化:

	IntrCfg g_intrCfg[] =
	{
			{0,core7, CSL_INTC_VECTID_4, timer0_7L, 0xff,
					Isr_Timer,NULL},
	};......

	status = InterruptInit(g_intrCfg,sizeof(g_intrCfg));
	printf("Timer interrupt init status : %d.\n",status);

Nancy Wang:

看一下timer counter寄存器是否开始计数。我这边测试一下看看。

user6417299:

回复 Nancy Wang:

你好,

感谢你的回复。

1.我没有看到Timer寄存器中开始计数,按照我通过cfg文件对定时器的设置方法,是否还需要调用函数开启或进行其他设置。

2.另外我也通过其它库的接口函数进行定时器的初始化,代码如下,使用该该方法后,我的中断服务函数Isr_Timer是可以正常进入的,但由于我的操作系统里面主体功能使用了带有协议栈的UDP通信,使用该方法后我的UDP就不能正常使用,不知为何 。问题定位后,发现只要禁用

status = InterruptInit(g_intrCfg,sizeof(g_intrCfg));这个功能,我的UDP通信就正常了。
	//中断IntrCfg g_intrCfg[] ={{0,core7, CSL_INTC_VECTID_4, timer0_7L, 0xff,Isr_Timer,NULL},};//定时器初始化C6678_Timer_Init();/*设置定时器编号和定时器周期(2秒)*/if(C6678_GP_Timer_Set(7,1000)){printf("Timer7 init success!\n");}else{printf("Timer7 init error!\n");}status = InterruptInit(g_intrCfg,sizeof(g_intrCfg));printf("Timer1 interrupt init status : %d.\n",status);C6678_Timer_Start(7,1);......

Nancy Wang:

回复 user6417299:

应该是不需要做额外的配置的,我配置了一下,选的timer ANY,是可以进入中断的。

user6417299:

回复 Nancy Wang:

你好,中断服务程序放在哪里呢,是否需要用extern引用?目前我是放在和main函数同一个.c中,但是发现断点是不能设置,断点处有黄色感叹号。断点处显示如下图,不知道是否和这个有关系。

另外我现在Timer ID也设置为ANY了,定时器中断还是不能进入。

Nancy Wang:

回复 user6417299:

你打开view->breakpoints看一下有没有该断点选项,你前面灰色的标志断点没打上。

不需要加extern,可以放在一个c文件下。

user6417299:

回复 Nancy Wang:

断点的问题现在解决了,然后我修改了程序,在主任务最开始的地方直接while(1),目的是为了把其他程序都屏蔽掉来测试定时器,但是这样仍然进不了。有点黔驴技穷了。

Nancy Wang:

回复 user6417299:

我导入了一个clock例程,然后在这个例程的基础上配置了一下,试一下。

clock_TMS320C6678.7z

user6417299:

回复 Nancy Wang:

你好,现在我的定时器可以正常使用了,但是我好像并没有修改什么实质性的内容,定时器的设置还是这样设置的,在后面的使用中我会继续关注一下这次遇到的问题,最后,感谢你的回复,谢谢。

赞(0)
未经允许不得转载:TI中文支持网 » DSP6678在跑BIOS操作系统时,进入不了Timer中断
分享到: 更多 (0)