天嵌 ARM开发社区

 找回密码
 注册
查看: 2626|回复: 0

新手请教下TFTLCD

[复制链接]
zyp568 发表于 2012-7-20 08:24:36 | 显示全部楼层 |阅读模式
本帖最后由 zyp568 于 2012-7-20 08:36 编辑

实验板:     TQ2440
实验环境: Ubuntu12.04 + arm-linux-gcc-3.4.5-glibc-2.3.6
自己写了一个TFTLCD的画点函数,在主函数中调用,想实现用单一颜色填充全屏的简单操作。
但是程勋运行到此画点函数时,就产生 Undef 终止。请各位帮忙看看啥原因哦。


额~~~代码好像不能正常排版哦~~~

  1. TFTLCD.c
  2.      
  3. //开启LCD控制器void TFT_EnLCD( void )
  4. {
  5.      LCDCON1 |= 1;
  6. }
  7.       
  8. //关闭LCD控制器void TFT_DisLCD( void )
  9. {
  10.      LCDCON1 &= 0xFFFFFFFE;
  11. }
  12.       
  13. //在指定坐标特定颜色的点描点
  14. int TFT_DrawPoint( unsigned int x, unsigned int y, unsigned int iColour )
  15. {
  16.             unsigned long *pBuffer;
  17.         
  18.             if( x>HOZVAL || y>LINEVAL ) return FAIL;            
  19.             #define BUFFER_BASE_ADDR                 ( LCDSADDR1 << 1 )
  20.             #define BUFFER_OFFSIZE_ADDR            ( y * ( HOZVAL + 1 ) + x )
  21.             pBuffer = (unsigned long *)( BUFFER_BASE_ADDR + BUFFER_OFFSIZE_ADDR );
  22.             *pBuffer = iColour;
  23.             return SUCCESS;
  24. }
复制代码
  1. //主函数中片段     
  2. //屏蔽掉TFT_DrawPoint( x, y, 0x000F );这个函数调用,程序的其他功能都是正常的。         
  3. for( x = 0 ; x < 480 ; x++ )
  4.           for( y = 0 ; y < 272 ; y++ )
  5.                      TFT_DrawPoint( x, y, 0x000F );TFT_EnLCD();
复制代码
  1. //寄存器初始化
  2. #define LINEVAL     271
  3. #define HOZVAL      479
  4. #define OFFSIZE     0
  5. #define PAGEWIDTH   ( ( HOZVAL + 1 ) * 32 / 16 )
  6. #define LCDBANK     0xA2000000
  7. #define LCDBASEU    0
  8. #define LCDBASEL    ( LCDBASEU + ( PAGEWIDTH + OFFSIZE ) * ( LINEVAL + 1 ) )
  9. #define LCDCON1_VAL ( 4<<8 | 0<<7 | 3<<5 | 0xD<<1 | 0x0<<0 )        
  10. #define LCDCON2_VAL ( 1<<24 | LINEVAL<<14 | 1<<6 | 9<<0 )        
  11. #define LCDCON3_VAL ( 1<<19 | HOZVAL<<8 | 1<<0 )         
  12. #define LCDCON4_VAL ( 0x0<<8 | 40<<0 )      
  13. #define LCDCON5_VAL ( 0<<12 | 1<<11 | 0<<10 | \
  14.                        1<<9 | 1<<8 | 0<<7 | 0<<6 | \
  15.                        1<<5 | 0<<4 | 1<<3 | 0<<2 | \
  16.                        0<<1 | 0<<0 )      
  17. #define LCDSADDR1_VAL ( ( LCDBANK>>22 )<<21 | LCDBASEU<<0 )      
  18. #define LCDSADDR2_VAL LCDBASEL     
  19. #define LCDSADDR3_VAL ( OFFSIZE<<11 | PAGEWIDTH )                  
  20. #define GPCCON_Val ( 2 << 30 ) | ( 2 << 28 ) | ( 2 << 26 ) | ( 2 << 24 ) | ( 2 << 22 ) | \
  21.      ( 2 << 20 ) | ( 2 << 18 ) | ( 2 << 16 ) | ( 0 << 14 ) | ( 0 << 12 ) | \
  22.      ( 0 << 10 ) | ( 2 <<  8 ) | ( 2 <<  6 ) | ( 2 <<  4 ) | ( 2 <<  2 ) | \
  23.      ( 0 <<  0 )      
  24. #define GPDCON_Val ( 2 << 30 ) | ( 2 << 28 ) | ( 2 << 26 ) | ( 2 << 24 ) | ( 2 << 22 ) | \
  25.      ( 2 << 20 ) | ( 2 << 18 ) | ( 2 << 16 ) | ( 2 << 14 ) | ( 2 << 12 ) | \
  26.      ( 2 << 10 ) | ( 2 <<  8 ) | ( 2 <<  6 ) | ( 2 <<  4 ) | ( 2 <<  2 ) | \
  27.      ( 2 <<  0 )         
  28. #define GPGCON_Val ( 0 << 30 ) | ( 0 << 28 ) | ( 0 << 26 ) | ( 0 << 24 ) | ( 0 << 22 ) | \
  29.      ( 0 << 20 ) | ( 0 << 18 ) | ( 0 << 16 ) | ( 0 << 14 ) | ( 0 << 12 ) | \
  30.      ( 0 << 10 ) | ( 3 <<  8 ) | ( 0 <<  6 ) | ( 0 <<  4 ) | ( 0 <<  2 ) | \
  31.      ( 0 <<  0 )
复制代码
整个测试工程如下:








本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

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

本版积分规则

关闭

i.MX8系列ARM cortex A53 M4 工控板上一条 /1 下一条

Archiver|手机版|小黑屋|天嵌 嵌入式开发社区 ( 粤ICP备11094220号 )

GMT+8, 2024-5-3 09:32 , Processed in 1.046868 second(s), 22 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表