首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

关于NIOS II 中断注册的问题请教

关于NIOS II 中断注册的问题请教

最近编写调试了关于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;

}

返回列表