|
在网上看了一下alt_main使用中断需要自己注册,但我注册了程序却任进不了中断程序。
我的程序如下:(sopc builder 中设置:一个input口,边沿中断 either edge ; 一个output口)
............................
#include "system.h"
#include "alt_types.h"
#include "sys/alt_irq.h"
#include "altera_avalon_pio_regs.h"
static void keydown(void* context,alt_u32 id)//中断处理函数
{
IOWR_ALTERA_AVALON_PIO_IRQ_MASK(PIO_KEY_BASE, 0x0);
while(1);
}
int alt_main(void)
{
int led=0;
int i;
alt_irq_init(ALT_IRQ_BASE);//初始化中断
alt_irq_enabled( );//使能中断
IOWR_ALTERA_AVALON_PIO_EDGE_CAP(PIO_KEY_BASE, 0x0);
IOWR_ALTERA_AVALON_PIO_IRQ_MASK(PIO_KEY_BASE, 0x1);//打开中断
alt_irq_register(PIO_KEY_IRQ,0,keydown);//注册中断函数
while(1)
{
led = ~led;
IOWR_ALTERA_AVALON_PIO_DATA(PIO_LED_BASE, led);//led灯闪烁
i = 0;
while(i<200000)
i++;
}
}
中断使能也用过alt_irq_enable_all(PIO_KEY_BASE );
不知为什么始终进不了中断程序(led灯一直在闪烁)~~ 跪求why!
|
|