标题:
请教nios2的中断问题
[打印本页]
作者:
congcongy
时间:
2005-3-21 10:39
标题:
请教nios2的中断问题
为什么我总是收不到来自PIO口的中断啊,我的程序很简单就是一个例子稍微修改了一下,只是希望收到一个按钮中断后把四个指示灯点起来,可是收不到任何中断,edge_capture的值总是为0,程序如下,哪为大侠指点一下啊: #include "system.h" #include "altera_avalon_pio_regs.h" #include "alt_types.h" #include "D:\document\nios\low_cost\h\alt_irq.h" #include
#include
volatile int edge_capture; static void handle_button_interrupts(void* context, alt_u32 id) { volatile int* edge_capture_ptr = (volatile int*) context; *edge_capture_ptr = IORD_ALTERA_AVALON_PIO_EDGE_CAP(BUTTON_PIO_BASE); IOWR_ALTERA_AVALON_PIO_EDGE_CAP(BUTTON_PIO_BASE, 0); } static void init_button_pio() { void* edge_capture_ptr = (void*) &edge_capture; /* Enable all 4 button interrupts. */ IOWR_ALTERA_AVALON_PIO_IRQ_MASK(BUTTON_PIO_BASE, 0xf); /* Reset the edge capture register. */ IOWR_ALTERA_AVALON_PIO_EDGE_CAP(BUTTON_PIO_BASE, 0x0); /* Register the interrupt handler. */ alt_irq_register( BUTTON_PIO_IRQ, edge_capture_ptr, handle_button_interrupts ); } int main (void) { IOWR_ALTERA_AVALON_PIO_DATA(LED_PIO_BASE, 0); #ifdef BUTTON_PIO_BASE init_button_pio(); #endif // while( 1 ) { if (edge_capture != 0) { IOWR_ALTERA_AVALON_PIO_DATA(LED_PIO_BASE, 0xf); } } return 0; }
作者:
NIOSII
时间:
2005-4-10 22:47
IOWR_ALTERA_AVALON_PIO_DATA(LED_PIO_BASE, 0);
#ifdef BUTTON_PIO_BASE
init_button_pio();
#endif
作者:
yinghee
时间:
2005-4-12 00:30
可能是你的存储器的基地址有问题,因一般CPU的中断矢量表在寻址空间的底端。
作者:
congcongy
时间:
2005-4-14 08:28
那我的存储器的基地址应该设为多少啊 ,我的设定如图所示:
[upload=bmp]uploadImages/200541483332.bmp[/upload]
欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/)
Powered by Discuz! 7.0.0