| 本帖最后由 zyp568 于 2012-7-20 08:36 编辑 
 
 实验板:     TQ2440实验环境: Ubuntu12.04 + arm-linux-gcc-3.4.5-glibc-2.3.6
 自己写了一个TFTLCD的画点函数,在主函数中调用,想实现用单一颜色填充全屏的简单操作。
 但是程勋运行到此画点函数时,就产生 Undef 终止。请各位帮忙看看啥原因哦。
 
 额~~~代码好像不能正常排版哦~~~
 复制代码TFTLCD.c
     
//开启LCD控制器void TFT_EnLCD( void )
{
     LCDCON1 |= 1;
}
      
//关闭LCD控制器void TFT_DisLCD( void )
{
     LCDCON1 &= 0xFFFFFFFE;
}
       
//在指定坐标特定颜色的点描点
int TFT_DrawPoint( unsigned int x, unsigned int y, unsigned int iColour )
{
            unsigned long *pBuffer;
        
            if( x>HOZVAL || y>LINEVAL ) return FAIL;            
            #define BUFFER_BASE_ADDR                 ( LCDSADDR1 << 1 )
            #define BUFFER_OFFSIZE_ADDR            ( y * ( HOZVAL + 1 ) + x )
            pBuffer = (unsigned long *)( BUFFER_BASE_ADDR + BUFFER_OFFSIZE_ADDR );
            *pBuffer = iColour;
            return SUCCESS;
}
复制代码//主函数中片段     
//屏蔽掉TFT_DrawPoint( x, y, 0x000F );这个函数调用,程序的其他功能都是正常的。         
for( x = 0 ; x < 480 ; x++ )
          for( y = 0 ; y < 272 ; y++ )
                     TFT_DrawPoint( x, y, 0x000F );TFT_EnLCD();
整个测试工程如下:复制代码//寄存器初始化
#define LINEVAL     271
#define HOZVAL      479
#define OFFSIZE     0
#define PAGEWIDTH   ( ( HOZVAL + 1 ) * 32 / 16 )
#define LCDBANK     0xA2000000
#define LCDBASEU    0
#define LCDBASEL    ( LCDBASEU + ( PAGEWIDTH + OFFSIZE ) * ( LINEVAL + 1 ) )
#define LCDCON1_VAL ( 4<<8 | 0<<7 | 3<<5 | 0xD<<1 | 0x0<<0 )        
#define LCDCON2_VAL ( 1<<24 | LINEVAL<<14 | 1<<6 | 9<<0 )        
#define LCDCON3_VAL ( 1<<19 | HOZVAL<<8 | 1<<0 )         
#define LCDCON4_VAL ( 0x0<<8 | 40<<0 )       
#define LCDCON5_VAL ( 0<<12 | 1<<11 | 0<<10 | \
                       1<<9 | 1<<8 | 0<<7 | 0<<6 | \
                       1<<5 | 0<<4 | 1<<3 | 0<<2 | \
                       0<<1 | 0<<0 )       
#define LCDSADDR1_VAL ( ( LCDBANK>>22 )<<21 | LCDBASEU<<0 )      
#define LCDSADDR2_VAL LCDBASEL     
#define LCDSADDR3_VAL ( OFFSIZE<<11 | PAGEWIDTH )                  
#define GPCCON_Val ( 2 << 30 ) | ( 2 << 28 ) | ( 2 << 26 ) | ( 2 << 24 ) | ( 2 << 22 ) | \
     ( 2 << 20 ) | ( 2 << 18 ) | ( 2 << 16 ) | ( 0 << 14 ) | ( 0 << 12 ) | \
     ( 0 << 10 ) | ( 2 <<  8 ) | ( 2 <<  6 ) | ( 2 <<  4 ) | ( 2 <<  2 ) | \
     ( 0 <<  0 )       
#define GPDCON_Val ( 2 << 30 ) | ( 2 << 28 ) | ( 2 << 26 ) | ( 2 << 24 ) | ( 2 << 22 ) | \
     ( 2 << 20 ) | ( 2 << 18 ) | ( 2 << 16 ) | ( 2 << 14 ) | ( 2 << 12 ) | \
     ( 2 << 10 ) | ( 2 <<  8 ) | ( 2 <<  6 ) | ( 2 <<  4 ) | ( 2 <<  2 ) | \
     ( 2 <<  0 )          
#define GPGCON_Val ( 0 << 30 ) | ( 0 << 28 ) | ( 0 << 26 ) | ( 0 << 24 ) | ( 0 << 22 ) | \
     ( 0 << 20 ) | ( 0 << 18 ) | ( 0 << 16 ) | ( 0 << 14 ) | ( 0 << 12 ) | \
     ( 0 << 10 ) | ( 3 <<  8 ) | ( 0 <<  6 ) | ( 0 <<  4 ) | ( 0 <<  2 ) | \
     ( 0 <<  0 )
 
 
 
 
 
 
 
 
 |