首页->【Altera FPGA小组】

664 2

请问这个UART程序为什么不能进入中断?

#include<string.h>
#include "stdio.h"
#include "system.h"
#include "altera_avalon_pio_regs.h"
#include "altera_avalon_uart_regs.h"
#include "alt_types.h"
#include "sys/alt_irq.h"
alt_u8 i;
void UART_interrupts()
{
      i=IORD_ALTERA_AVALON_UART_RXDATA(PIO_BASE);
      IOWR_ALTERA_AVALON_PIO_DATA(PIO_BASE,i);
      printf("successful.\n");
}
void init()
{
   alt_irq_init(ALT_IRQ_BASE);
   IOWR_ALTERA_AVALON_UART_CONTROL(UART_BASE,0X80);
   IOWR_ALTERA_AVALON_UART_STATUS(UART_BASE,0X00);
   IOWR_ALTERA_AVALON_UART_RXDATA(UART_BASE,0X00);
   alt_irq_register(UART_IRQ,NULL,UART_interrupts);  
}
int main()
{
    init();
    while(1);
    return 0;
   
}

楼主可见

  1. zhqsh 2#

    国家强大了,产业发展了,咱们电子工程师腰杆也可以硬气些了。

  2. 捡捡 1#

    在你的中断函数中应该出现这个
    IOWR_ALTERA_AVALON_UART_STATUS(UART_BASE,0x0);
    否则你的程序应该只能执行一次。
    再就是你的设置可能有错误。