nios ii无法注册两个pio的中断

2019-03-25 10:14发布

环境是win7 64bit,quartus ii 11.0.   用到两个pio的边沿中断。注册中断时发现总是有一个中断无法注册成功。 中断部分代码如下: volatile int flag_dvalid = 0;
volatile int flag_ready = 0; // dvalid信号,上升沿中断
void dvalid_isr_handle( void* context )
{
 flag_dvalid = 1;
 IOWR_ALTERA_AVALON_PIO_EDGE_CAP( PIO_DVALID_BASE, 0x0 );
} void dvalid_init( void )
{
 IOWR_ALTERA_AVALON_PIO_IRQ_MASK( PIO_DVALID_BASE, 0x1 ); // 使能按钮中断
 IOWR_ALTERA_AVALON_PIO_EDGE_CAP( PIO_DVALID_BASE, 0x0 ); // 清边沿捕获寄存器  alt_irq_register( PIO_DVALID_IRQ, NULL, dvalid_isr_handle );  alt_ic_isr_register( PIO_DVALID_IRQ_INTERRUPT_CONTROLLER_ID, PIO_DVALID_IRQ,
     dvalid_isr_handle, NULL, 0x0 );
} // ready信号,上升沿中断
void ready_isr_handle( void* context )
{
 flag_ready = 1;
 IOWR_ALTERA_AVALON_PIO_EDGE_CAP( PIO_READY_BASE, 0x0 );
} void ready_init( void )
{
 IOWR_ALTERA_AVALON_PIO_IRQ_MASK( PIO_READY_BASE, 0x1 ); // 使能按钮中断
 IOWR_ALTERA_AVALON_PIO_EDGE_CAP( PIO_READY_BASE, 0x0 ); // 清边沿捕获寄存器  alt_ic_isr_register( PIO_READY_IRQ_INTERRUPT_CONTROLLER_ID, PIO_READY_IRQ,
      ready_isr_handle, NULL, 0x0 );
} 主函数中对两个init函数进行初始化,总是只注册成功一个。   后来改为老版本的中断注册方式,即:  alt_irq_register( PIO_DVALID_IRQ, NULL, dvalid_isr_handle );  alt_irq_register( PIO_READY_IRQ, NULL, ready_isr_handle ); 这样以后就可以两个都注册成功。   请问,这是什么情况造成的?为什么9.1以后的中断注册方式出现了这个问题? 新人,急求高人指点。 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
1条回答
eeleader
1楼-- · 2019-03-25 15:42
< /

顶!

一周热门 更多>