帮我看看下面这段程序怎么不能注册中断啊
#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();这两句的时候能够注册成功,调用了之后反而不能注册了.
欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) | Powered by Discuz! 7.0.0 |