408751892 发表于 2011-4-16 13:45:11

图片过大(eg:1024*768)显示出错的问题

例子2.1更改图片显示程序:可显示任意大小的图片(屏幕范围内的内容)

void Paint_Bmp(int x0,int y0,int h,int l,unsigned char bmp[])
{
        int x,y;
        U32 c;
        int p = 0;
       
    for( y = 0 ; y < l ; y++ )
    {
            for( x = 0 ; x < h ; x++ )
            {
                    c = bmp | (bmp<<8) ;//图片的每个像素点由两组数据组成
                        if ( ( (x0+x) < SCR_XSIZE_TFT) && ( (y0+y) < SCR_YSIZE_TFT) )                               
                                {
                                LCD_BUFFER = c ;
                                p = p + 2 ;
                                }
                        else//超过相框边缘的数据跳过
                                {
                                if((x0+x)==SCR_XSIZE_TFT)
                                       
                                        {
                                                p=p+2*(x0+h-SCR_XSIZE_TFT);                                               
                                        }
                                       
                                if((y0+y)>=SCR_YSIZE_TFT)
                                       
                                        {
                                        p=p+2*(y0+l-SCR_YSIZE_TFT);
                                        }
                                }
                   
            }
    }
}

注:
{
但是这个程序在图片过大(eg:780*545)的时候会出现错误:显示这个程序结果
void HaltDabort(void)
{
Uart_Printf("Dabort exception!!!\n");
while(1);
}
}

408751892 发表于 2011-4-17 08:15:14

求高人指点一下~~

WTW11897 发表于 2011-4-24 13:46:10

U32 c; 是不是这里的问题。
一个像素是16位的

WTW11897 发表于 2011-4-24 13:53:31

呃。。。 应该不是这个问题

408751892 发表于 2011-5-1 16:00:56

4# WTW11897
主要是后面的那个中断错误时怎么来的不是很清楚。内存什么的分配设置的问题吗?

WTW11897 发表于 2011-5-2 22:35:52

是不是数组越界了呀,仔细看看程序
页: [1]
查看完整版本: 图片过大(eg:1024*768)显示出错的问题