- UID
- 118426
- 性别
- 男
|
#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:引脚分配没有问题。 |
|