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

请大家来讨论一个中断程序

请大家来讨论一个中断程序

程序应该实现按一下键相应的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;
 }

返回列表