首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

关于pio口电平中断的问题

关于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的属性中我已经将它改成了电平格式.

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