
- UID
- 94533
- 性别
- 男
|
这几天想搞中断,用c语言,按照nios的pdf文件说的,从pio口引入中断,进行中断服务程序建立,源程序如下
#include "excalibur.h"
void PIO_ISR(int context);
int main(void)
{
int k,context=0;
np_pio *pio = na_pio_0;
nr_installuserisr(na_pio_0_irq,PIO_ISR, context); // install UART ISR
pio->np_pioedgecapture = 0; // clear any existing IRQ condition
pio->np_piointerruptmask = 0xf; // they all generate irq's!
while(1)
{
for(k=0;k<10;k++)
{
na_pwm->np_piodata = k;
}
}
return 0;
}
/************************************************************************/
void PIO_ISR(int context)
{
int i;
np_pio *pio =(np_pio *)context;
na_pio_0->np_pioedgecapture = 0;// clear the irq condition
for(i=0;i<10;i++)
{
na_pwm->np_piodata = i;
nr_delay(1000);
}
}// end of ISR
可以说已经原始的不能再原始的程序了,准备用按钮引入一个中断事件,让程序响应后跳转到PIO_ISR处去驱动与pio相连的数码管,但是下到板子后发现根本无法引入中断,不知各位高手能否赐教。 |
|