Board logo

标题: 中断问题 [打印本页]

作者: yolandy    时间: 2004-9-28 11:12     标题: 中断问题

中断问题
我在nios2中写了一个按键的中断程序,可就是进不了中断

下面就是我的程序:
#include "system.h"
#include "altera_avalon_pio_regs.h"
#include "alt_types.h"
#include "altera_avalon_uart_regs.h"
#include "sys/alt_irq.h"

volatile int edge_capture;
static void handle_key_interrupt(void* context,alt_u32 id)
{
// int* edge_capture_ptr=(int*)context;
// IOWR_ALTERA_AVALON_PIO_EDGE_CAP(KEY_PIO_BASE);
IOWR_ALTERA_AVALON_PIO_IRQ_MASK(KEY_PIO_BASE, 0xff);
IOWR_ALTERA_AVALON_PIO_DATA(LED_PIO_BASE, 0x55);
}

static void init_key_pio()
{
  /* Recast the edge_capture pointer to match the alt_irq_register() function
   * prototype. */
  void* edge_capture_ptr = (void*) &edge_capture;
  /* Enable all key interrupts. */
  IOWR_ALTERA_AVALON_PIO_IRQ_MASK(KEY_PIO_BASE, 0xff);
  /* Reset the edge capture register. */
  IOWR_ALTERA_AVALON_PIO_EDGE_CAP(KEY_PIO_BASE, 0x0);
  /* Register the interrupt handler. */
  alt_irq_register( KEY_PIO_IRQ, edge_capture_ptr, handle_key_interrupt );
}

int main (void) __attribute__ ((weak, alias ("alt_main")));
int alt_main (void)
{
    volatile int i;
   
    i=0;   
//   alt_u8 led=0x01;   
//    alt_u8 key;
   
#ifdef KEY_PIO_BASE
  init_key_pio();
#endif

    i=alt_irq_enabled();
    IOWR_ALTERA_AVALON_PIO_DATA(LED_PIO_BASE, 0xf0);
  while (1)                                 
  {}
  return 0;
}




欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0