本帖最后由 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 )
复制代码 整个测试工程如下:
|