首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

中断问题

中断问题

中断问题
我在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;
}
返回列表