程序应该实现按一下键相应的LED就亮,但是按下后灯没有反应,LED为低电平有效.
#include "system.h" #include "altera_avalon_pio_regs.h" #include "sys/alt_irq.h" #include "alt_types.h" volatile int led; static void handle_button_interrupt(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_DATA(LED_PIO_BASE,led); IOWR_ALTERA_AVALON_PIO_EDGE_CAP(BUTTON_PIO_BASE,0); } int main (void) __attribute__ ((weak, alias ("alt_main"))); int alt_main(void) {
led=0; while(1) { void *edge_capture_ptr=(void *)&led; IOWR_ALTERA_AVALON_PIO_EDGE_CAP(BUTTON_PIO_BASE,0); IOWR_ALTERA_AVALON_PIO_IRQ_MASK(BUTTON_PIO_BASE,0xf); alt_irq_register(BUTTON_PIO_IRQ, edge_capture_ptr, handle_button_interrupt); } return 0; } |