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

请高手帮忙

请高手帮忙

这段代码编译能够通过,可运行之后,按键没有任何效果,不知道哪里出问题了,请各位高手指点,谢谢了!

#include <stdio.h>
#include "alt_types.h"
#include "system.h"
#include "altera_avalon_pio_regs.h"
#include <unistd.h>
#include "sys/alt_irq.h"
#include "clock.h"

volatile int edge_capture;


static void init_led_pio(){
IOWR_ALTERA_AVALON_PIO_DATA(LEDG_BASE, 0x00);
//OWR_ALTERA_AVALON_PIO_DATA(LEDG_BASE,0x00);
//OWR_ALTERA_AVALON_PIO_DATA(LEDG_BASE,0x00);
//OWR_ALTERA_AVALON_PIO_DATA(LEDG_BASE,0x00);
}

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

static void init_button_pio(){
void* edge_capture_ptr=(void*)&edge_capture;
IOWR_ALTERA_AVALON_PIO_IRQ_MASK(BUTTON_PIO_BASE,0xf);
IOWR_ALTERA_AVALON_PIO_EDGE_CAP(BUTTON_PIO_BASE,0x1);
alt_irq_register(BUTTON_PIO_IRQ,edge_capture_ptr,handle_button_interrupts);
}


static void initial(){
// dout=0;
edge_capture=0;
}

static void handle_button_press(){
switch(edge_capture){
case 0x0:
IOWR_ALTERA_AVALON_PIO_DATA(LEDG_BASE, 0x07);
break;
case 0x1:
IOWR_ALTERA_AVALON_PIO_DATA(LEDG_BASE, 0x01);

break;


case 0x2:
IOWR_ALTERA_AVALON_PIO_DATA(LEDG_BASE, 0x02);

break;


case 0x4:
IOWR_ALTERA_AVALON_PIO_DATA(LEDG_BASE, 0x04);

break;


case 0x8:
IOWR_ALTERA_AVALON_PIO_DATA(LEDG_BASE, 0x08);

break;

/*
static void light(){
if(edge_capture==0x1){
IOWR_ALTERA_AVALON_PIO_DATA(LEDG_BASE, 0x06);

}
}*/


default:
usleep(500000); break;
}
}
int main(){
init_button_pio();
initial();
init_led_pio();

while(1){

handle_button_press();

}
}

返回列表