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

帮忙看个中断程序,谢谢啦

帮忙看个中断程序,谢谢啦

#include "system.h"
#include "altera_avalon_pio_regs.h"
#include "alt_types.h"
#include "sys/alt_irq.h"

volatile int edge_capture;
void led_test();

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(PIO_0_BASE);
  IOWR_ALTERA_AVALON_PIO_EDGE_CAP(PIO_0_BASE,0);
}

static void init_button_pio()
{
  void *edge_capture_ptr=(void*)&edge_capture;
  IOWR_ALTERA_AVALON_PIO_IRQ_MASK(PIO_0_BASE,0xf);
  IOWR_ALTERA_AVALON_PIO_EDGE_CAP(PIO_0_BASE,0x0);
  alt_irq_register(PIO_0_IRQ,edge_capture_ptr,handle_button_interrupts);
}

int alt_main (void)
{
alt_u8 led = 0x2;
  
while(1)
{   
    init_button_pio();
    IOWR_ALTERA_AVALON_PIO_DATA(PIO_1_BASE, led);
    if(edge_capture!=0)  
     {
        led_test();
     }
}
  return 0;
}
   
void led_test()
{
  switch(edge_capture)
  {
  case 0x1:
  IOWR_ALTERA_AVALON_PIO_DATA(PIO_1_BASE, 0x1);
  case 0x2:
  IOWR_ALTERA_AVALON_PIO_DATA(PIO_1_BASE, 0x2);
  default:
  IOWR_ALTERA_AVALON_PIO_DATA(PIO_1_BASE, 0x3);
  }
}


一个中断程序,用按键来产生中断,中断服务程序是另外的灯亮。现在程序编译下载均无错误,但是按键按下没有反应,不知是什么原因。

高手帮忙看看可能什么原因造成的。ps:引脚分配没有问题。
返回列表