- UID
- 93285
- 性别
- 男
|
中断问题
我在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;
} |
|