最近编写调试了关于PIO中断和TIMER中断的程序:4个PIO中断(优先级为0-3)、1个TIMER中断(优先级为4)。调试中出现的问题是4个PIO中断注册成功,ienable寄存器中相应的BIT 位成功置1,但是TIMER中断在注册后ienable寄存器中相应的BIT位却仍然是0,现在百思不得其解。现在把源程序贴出来,希望大家能给点意见。谢谢了
#include "system.h"
#include "altera_avalon_timer_regs.h"
#include "altera_avalon_apio_regs.h"
#include "alt_types.h"
#include "sys/alt_irq.h"
void int0_isr(void *context,alt_u32 id)
{
}
void int1_isr(void *context,alt_u32 id)
{
}
void int2_isr(void *context,alt_u32 id)
{
}
void int3_isr(void *context,alt_u32 id)
{
}
void timer_isr(void *context,alt_u32 id)
{
}
int main(void)
{
alt_irq_register(PIO_0_IRQ,(void *)0,int0_isr);
alt_irq_register(PIO_1_IRQ,(void *)0,int1_isr);
alt_irq_register(PIO_2_IRQ,(void *)0,int2_isr);
alt_irq_register(PIO_3_IRQ,(void *)0,int3_isr);
/* 执行上面三条语句后ienable寄存器的值为0x0f, 四个中断都被使能*/
alt_irq_register(TIMER_IRQ,(void *)0,timer_isr);
/*执行这条语句却没有将寄存器修改为0x1f ,它的值仍然是0x0f,所以定时器中断被禁止*/
/* 大伙儿想想这是什么原因造成的呢?*/
........
while(1);
return 0;
}
欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) | Powered by Discuz! 7.0.0 |