痛苦,求助: 小弟写了一段测试定时器中断的代码,语法没有错误,可是烧到片子上之后什么反映都没有,我已经调试半个月了也不知道问题出在什么地方,请各位大虾不吝赐教(急!)附代码如下: #include "system.h" #include "altera_avalon_pio_regs.h" #include "altera_avalon_timer_regs.h" #include "alt_types.h" #include "sys/alt_irq.h" volatile int count;//全局变量 static void handle_Timer0_interrupts(void* context, alt_u32 id) { alt_u8 a; volatile alt_u8 *countptr = (volatile alt_u8 *)context; IOWR_ALTERA_AVALON_TIMER_STATUS(TIMER_0_BASE, 0);//清TO标志 a = *countptr; //取出count中的值 a=a<<1; //左移一位 if (a == 0x10) *countptr=1; //重新赋值给count IOWR_ALTERA_AVALON_PIO_DATA(GO_BASE, a); //写到LED输出口 }
int alt_main (void) { count=0x01; alt_irq_register( TIMER_0_IRQ, (void *)&count, handle_Timer0_interrupts); //注册中断函数 IOWR_ALTERA_AVALON_TIMER_CONTROL(TIMER_0_BASE, 7); //启动timer允许中断,连续计数
while (1) {;} }
备注:我用SOPC设计的是NIOSII的E型软核、片内RAM(4K)、定时器的周期为1秒 |