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

alt_main 重载问题

alt_main 重载问题

帮我看看下面这段程序怎么不能注册中断啊

#ifdef UART_BASE
void uart_handle(void *context,alt_u32 interrupt)                                    //中断服务程序 执行后点亮LED1
{
    IOWR_ALTERA_AVALON_PIO_DATA(LED_IRQ_BASE, 0x0);
}                                                          


void uart_init()                                                                                           //UART初始化程序,允许发送中断         
{
  
  int divisor;
 
  control = 0x0040;
  IOWR_ALTERA_AVALON_UART_CONTROL(UART_BASE, control);
 
  divisor = (int)(50000000/9600+0.5);
  IOWR_ALTERA_AVALON_UART_DIVISOR(UART_BASE, divisor);

   
  if (alt_irq_register(UART_IRQ, NULL, uart_handle)==0)                            //中断注册成功点亮LED2
   {
     IOWR_ALTERA_AVALON_PIO_DATA(LED_PIO_BASE, 0x0);
   }
}
#endif

int alt_main (void)
{   
    alt_irq_init(ALT_IRQ_BASE);
    alt_sys_init();
   
   
    IOWR_ALTERA_AVALON_PIO_DATA(LED_IRQ_BASE, 0x1);                     
    IOWR_ALTERA_AVALON_PIO_DATA(LED_PIO_BASE, 0x1);

        
    uart_init();
   
   
   
    IOWR_ALTERA_AVALON_UART_TXDATA(UART_BASE, 0x10);
       
     
    while(1)
    {  }    ;
    return 0;
}

我的板子上只设计了外部FLASH,片内RAM最大只能设计2K,所以采用重载alt_main函数减少代码量.没有调用   alt_irq_init(ALT_IRQ_BASE);  alt_sys_init();这两句的时候能够注册成功,调用了之后反而不能注册了.

[em06]        
看看我们论坛上的uart的例子。
在交流中前进,共同实现nios的应用。
返回列表