我想在我的程序中添加一个简单的按键中断,实现功能为:f1建按下时在数码管上显‘9’, f2建按下时显‘6’。f1,f2分别接到了由于产生中断的pio的0和1位上。
程序如下: #include "system.h" #include "altera_avalon_pio_regs.h" #include "alt_types.h" #include "sys/alt_irq.h" 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_1_BASE); IOWR_ALTERA_AVALON_PIO_EDGE_CAP(BUTTON_PIO_1_BASE,0); } static void init_button_pio_1(){ void* edge_capture_ptr=(void*)&edge_capture; IOWR_ALTERA_AVALON_PIO_IRQ_MASK(BUTTON_PIO_1_BASE,0x1); IOWR_ALTERA_AVALON_PIO_EDGE_CAP(BUTTON_PIO_1_BASE,0x0); alt_irq_register(BUTTON_PIO_1_IRQ,edge_capture_ptr,handle_button_interrupts); } static void handle_button_press(){ switch(edge_capture) {case 0x1: IOWR_ALTERA_AVALON_PIO_DATA(SHUMAGUAN_PIO_BASE,0x9); break; case 0x2: IOWR_ALTERA_AVALON_PIO_DATA(SHUMAGUAN_PIO_BASE,0x6); break; } } int main (void) { 。。 。。 init_button_pio_1(); while (1) {。。 。。 if(edge_capture!=0) { handle_button_press(); } } return 0; }
现在的问题是:当f1键按下时数码管能 显示‘9’但f2按下后毫无反应,请各位高手帮忙分析一下是什么原因?? 谢谢!! [em06]
[此贴子已经被作者于2007-5-24 11:37:42编辑过] |