Board logo

标题: 关于pio口电平中断的问题 [打印本页]

作者: xinyun    时间: 2006-4-9 18:44     标题: 关于pio口电平中断的问题

下面是我写的代码:
#include "stdio.h"
#include "altera_avalon_pio_regs.h"
#include "sys/alt_irq.h"
#include "system.h"
#include "alt_types.h"


volatile int temp;
volatile int   data;


void handle_buttom_interrupt(void)
{
  data=IORD_ALTERA_AVALON_PIO_EDGE_CAP(BUTTOM_4_BASE);
  //IOWR_ALTERA_AVALON_PIO_EDGE_CAP(LED_BASE,data);
   printf("LAST_TEMP=%d",temp);
  if(temp!=data)
  {
  temp=data;
 
  printf("NOW_TEMP= %d\n",temp);
  }
  IOWR_ALTERA_AVALON_PIO_EDGE_CAP(BUTTOM_4_BASE,0X00);
  //IOWR_ALTERA_AVALON_PIO_IRQ_MASK(BUTTOM_4_BASE,0X00);
  //IOWR_ALTERA_AVALON_PIO_IRQ_MASK(BUTTOM_4_BASE,0XFF);
}


int main(void)
{
  //volatile int k;
  printf("WAITING......\n");
  alt_irq_register(2,0,(void *)handle_buttom_interrupt);
  printf("WAITING......\n");
  IOWR_ALTERA_AVALON_PIO_IRQ_MASK(BUTTOM_4_BASE,0XFF);
  while (1);
}
1 .为什么不能检测到\电平的跳变?
2.在printf()函数中的" "中的内容长点的话为什么不能全部显示出来
  如下面的:
   printf("dfjsdfjdsklhgkdfkmciydfhiceriufcrejcfrurecfuerkufcerux9erkwuf\n");
   显示的时候却出现了
  dfjsdfjdsklhgkdfkmciydfhiceriufc
   然后就出现了程序不运行了.
  但是将""中的内容减小,程序就运行正常了(在边沿出发的情况下面是正常的,电平情况见上面的程序,不能正常运行) 在buttom_4的属性中我已经将它改成了电平格式.


作者: meling    时间: 2006-4-9 19:54

alt_irq_register(2,0,(void *)handle_buttom_interrupt);
有问题,前两个参数应该是handle_buttom_interrupt()函数的参数;
在中断程序中不要用printf();




欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0