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

C6747中断问题

你好,我采用的是C6747芯片,有以下几个问题请教。

1、跳进中断后,第一次执行清除中断标志位的语句起不了作用,中断标志位不能及时清除,程序在执行完中断服务程序后,会再次跳进中断,再次执行清除中断标志的语句,才会把中断标志位清除,请问这可能是哪里的问题,我实在想不明白。

2、请问有没有用定时器实现定时功能的例程啊?

Shine:

1.进入中断后,会自动保存GIE,并清除为0,跳出中断时,恢复GIE值,不需要人工清除。

2. 看一下rcsl里的例程quickStartOMAPL1x_rCSL\OMAPL1x\rCSL_examples\evmOMAPL137\DSP_examples\timer\TIMER_led_blink_frequency_dspL137。http://processors.wiki.ti.com/index.php/QuickStartOMAPL1x_rCSL

招财猫了个咪:

回复 Shine:

你好,我用的是I/O中断,进入中断后清除的是对应I/O中断的中断标志位

招财猫了个咪:

回复 Shine:

2. 看一下rcsl里的例程quickStartOMAPL1x_rCSL\OMAPL1x\rCSL_examples\evmOMAPL137\DSP_examples\timer\TIMER_led_blink_frequency_dspL137。http://processors.wiki.ti.com/index.php/QuickStartOMAPL1x_rCSL,这个用定时器实现定时功能的例程在哪里?找不到啊

Shine:

回复 招财猫了个咪:

在上面的链接里下载安装Version 2.0: quickStartOMAPL1x_rCSL_2.0。

招财猫了个咪:

回复 Shine:

你好,这个里面函数文件不完整啊,主函数里很多子函数定义找不到,包含这些子函数的程序在哪里找呢?

Tony Tang:

回复 招财猫了个咪:

是GPIO上的信号有抖动才导致进2次才退出,不防在ISR里对清除操作做个判断,看第一次进入是否真的清除了,以此来判断是不是抖动导致的第二次置位。

招财猫了个咪:

回复 Tony Tang:

你好,调试时是这样一种现象:第一次执行完中断服务函数以后,ISR相应位是清零的,但是此时程序并没有跳出中断,而是返回中断服务函数最开始继续执行中断服务函数,且执行过程中ISR相应位置1,这样重复几次,才会跳出中断,而且我在中断里的清除对应I/O中断语句,在最后一次执行中断函数时,才起作用。

Tony Tang:

回复 招财猫了个咪:

是不是中断服务函数前没加关键字interrupt啊?把相关代码贴一下。

招财猫了个咪:

回复 Tony Tang:

中断初始化部分:

void interrupt_Init(void){ GPIO_BINTEN=0x02; // 使能GPIO BANK 1外部中断 GPIO_01->SET_FAL_TRIG[1] = 0x001f; GPIO_01->CLR_RIS_TRIG[1] = 0x001f; GPIO_01->INTSTAT[1] = 0xffff; // 清除GPIO BANK 1中断标志位

ISTP=0x80000000; // 重置中断向量表到0C00h asm(" NOP 2 ");

CSR = 0xfffe; // 关全局中断 asm(" NOP 2 ");

ICR = 0xffff; // 清除中断标志位 asm(" NOP 2 ");

IER = 0xffff; // 使能CPU中断 asm(" NOP 2 ");

DSP_INTC->INTMUX1=0x00292804; asm(" NOP 2 "); }

中断服务函数:

void interrupt accept ( ){ SWITCH ( );

GPIO_01->INTSTAT[1]=0xffff; //清除中断标志位

channel = ( Uint16 ) SWITCH( ); Offer ( channel, Rec, 70 );}

Tony Tang:

回复 招财猫了个咪:

#1. 上面的代码没什么大问题。

#2. 小问题:没有看到使能GIE,中断如何能进入呢。 

       系统中bank 1有几个管脚会送入中断信号?无关的就不要使能其中断触发功能了。

       IER也一样,不用的中断,不要使能。

#3. 测试时,GPIO上是手动触发的,还是别的芯片提供的,排除抖动的因素。

#4. 中断向量表怎么写的?

赞(0)
未经允许不得转载:TI中文支持网 » C6747中断问题
分享到: 更多 (0)