3100|2

69

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

请教一个LCD中断的问题 [复制链接]

我现在在LPC2478开发板下外部FLASH跑LCD程序,仿真放在中断处,发现一个奇怪的问题。
    如果进了中断,LCD_INISTAT的bit[1]一直是1;
    如果我在内部flash跑,LCD_INTSTAT的bit[1]就不为1,为0。

    内部flash全速跑,正常,lcd图片显示。
    外部flash全速跑,不正常,lcd图片不显示,如果停止全速debug,则图片显示。

不知道这是什么原因造成的? 哪位大哥给点意见,谢谢了。

另外,LCD启动后,是否会自动启动DMA功能?
因为我实际试验下来,如果我在main中,隐去这两句:
DMA_SRC = 0xA0000000;
LCD_UPBASE = DMA_SRC;

则液晶屏lcd无显示,如果加上了,就有显示,这两句是跟DMA有关的。但是程序中我并没有PCONP中使能DMA的PCGPDMA置位

我的代码是这样的:
/******************************************************************************
** Function name:        DMAHandler
**
** Descriptions:        DMA interrupt handler
**
** parameters:            None
** Returned value:        None
**   
******************************************************************************/
__irq __arm void DMAHandler (void)
{
  DWORD regVal;
  
  //IENABLE;                /* handles nested interrupt */
  regVal = LCD_INTSTAT;
  if ( (regVal&0x00000002) == 0x00000002 )  //FUFMIS
  {
    LCD_INTCLR |= 0x00000002;
  }

  //LNBUIC
  if ( (regVal&0x00000004) == 0x00000004 )
  {
    LCD_INTCLR |= 0x00000004;
  }
  //VCompMIS
  if ( (regVal&0x00000008) == 0x00000008 )
  {
    LCD_INTCLR |= 0x00000008;
  }
  //BERRAW
  if ( (regVal&0x00000010) == 0x00000010 )
  {
    LCD_INTCLR |= 0x00000010;
  }
  //IDISABLE;     

  VICVectAddr = 0;        /* Acknowledge Interrupt */
}

/******************************************************************************
** Function name:        DMA_Init
**
** Descriptions:        
**
** parameters:            
** Returned value:        
**
******************************************************************************/
DWORD DMA_Init( void)
{
  
  LCD_INTMSK |= (0x01 << 4)|(0x01 << 3)|(0x01 << 2)|(0x01 << 1);
   
   
  if ( install_irq( EINT2_INT, (void *)DMAHandler, HIGHEST_PRIORITY ) == FALSE )
  {
    return ( FALSE );
  }         
  return (TRUE);
  
}

void lcd_configure_gpio( void)
{
    PINSEL0  |= 0x00055500;
    //PINSEL1 = 0x00000000;
    //PINSEL2 = 0x00000000;

    PINSEL3  |= 0x05555500;
    PINSEL4  |= 0x054FFFFF;
    //PINSEL5 = 0x00000000;
    //PINSEL6 = 0x00000000;
    //PINSEL7 = 0x00000000;
    //PINSEL8 = 0x00000000;
   
    PINSEL9  |= 0x0A000000;
   
    PINSEL10 &= 0xFFFFFFF7;
    PINSEL11 |= 0x0000000F;
  ////////////////////////////////////////////////////////////////////
    /*    PINSEL0  |= 0x00055500;

    PINSEL3  |= 0x05555500;
    PINSEL4  |= 0x054FFFFF;//p2.1,p2.0 is used for PWM2,1
   
    PINSEL9  |= 0x0A000000;
   
    PINSEL10 &= 0xFFFFFFF7;//ETM interface is disabled
//    PINSEL11 |= 0x0000000F;//24bit
    PINSEL11 |= 0x0000000D;//15bit*/
        
}

void LCD_Disp_Config( void)
{
    int i;
  PCONP |= 0x00100000;//使能LCD Controller

    //以下寄存器参看LPC24XX用户手册,LCD一章。结合SHARP LQ043液晶参数进行设置
    LCD_CTRL = 0x00;

    LCD_CFG = 0x08;

    LCD_CTRL = (0x01 << 5)|(0x05 << 1);
                                                                           
    LCD_TIMH = (0x01 << 24)|(0x01  << 16)|(0x1d << 8 )|(0x13 << 2);
   
    LCD_TIMV = (0x02 << 24)|(0x02  << 16)|(0x02 << 10)|(0x10F);

        LCD_POL  = (0x01 << 26)|(0x1DF << 16)|(0x00 << 14)|(0x01 << 13)|(0x01 << 12)|(0x01 << 11)|(0x14);
   
    LCD_CTRL |= 0x01;
    delayMs(0,50);
    LCD_CTRL |= (0x01 << 11);
}

最新回复

不知道怎么回事  详情 回复 发表于 2008-9-17 15:34
点赞 关注

回复
举报

69

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
适当加点延时看看
 
 

回复

84

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
不知道怎么回事
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表