gpt4 book ai didi

c - 用完 ram 声明全局二维数组问题

转载 作者:行者123 更新时间:2023-12-02 02:09:07 25 4
gpt4 key购买 nike

我需要一种不同的方式来全局访问 160*160 位的数据,这不会导致我用完 ram。我正在尝试为 160*160 LCD 黑白屏幕创建一个后台缓冲区。所以 160*10 int 给我 160*160 位,因为 int 是 16 位。但是,我的板上 RAM 快用完了。有没有人有办法解决这个我不会使用 ram 的问题?也许以某种方式分配?但我似乎无法找到分配二维数组的正确方法。还有其他方法吗?

编辑:它是一个 msp430 rbx430 板,(这里是它的图片的链接 http://i.ytimg.com/vi/rr18why8wzY/0.jpg )是的,这个设备上的 int 是 16 位。多头和 double 是 32 位。该设备有 64k 内存,我以 16mhz 运行它。我要求 3,200 字节

至于说得通,怎么说不通呢?我有一个 64k 设备,其中 int 是 16 位。我通过使用 1 和 0 来跟踪像素何时打开或关闭,从而为 160*160 液晶屏幕创建 map 。在我打开我想要的所有像素后,我将我的 map 应用到液晶显示器上。这样我就不必在液晶显示器上画画然后删除液晶显示器然后再次画画。我可以简单地画画,然后在上面画画。这将使它不会闪烁。

有效地创建一个后台缓冲区来绘制到 lcd。

static int lcdPixels[160][10];

/*Must call this before using RBX430_graphics*/
void initGraphics(void)
{

int h = 0;
int w = 0;

for(h=0; h < ROW_SIZE; h++)
{
for(w=0; w < COLUMN_SIZE; w++)
{
lcdPixels[h][w] = 0;
}
}
}

---------------------------------剩下的--------- --------------

void pixelOn(int posX, int posY)
{
// first grab the right column
int column = ( ((float)posX/16.0f) + 0.9f);
// next grab the right bit
int bit = posX;
while(bit > 16)
{
bit = bit - 16;
}

//turn on the bit/pixel
lcdPixels[posY][column] |= (1 << bit);
}

void pixelOFF(int posX, int posY)
{
// first grab the right column
int column = ( ((float)posX/16.0f) + 0.9f);
// next grab the right bit
int bit = posX;
while(bit > 16)
{
bit = bit - 16;
}

//turn off the bit/pixel
lcdPixels[posY][column] &= ~(1 << bit);
}

/* Call this to commit the current backBuffer to the LCD display*/
void commitBuffer(void)
{
int h = 0;
int w = 0;
int k = 0;

for(h=0; h < ROW_SIZE; h++)
{
for(w=0; w < COLUMN_SIZE; w++)
{
for(k=0; k < INT_SIZE; k++)
{
if((lcdPixels[h][w] & (1 << k)) >> k)
{
lcd_point(((w * 16) + k), h, ON);
}
else
{
lcd_point(((w * 16) + k), h, OFF);
}
}
}
}
}

所以我现在尝试使用 malloc 分配数组,但这也是行不通的。我想我不能这样做,160*160 位的数据量就够了....

最佳答案

您有 64K 的 RAM 还是 64K 的闪存?我认为 RBX430 上有一个 msp430f2274 (http://www.ti.com/product/msp430f2274),它只有 1K 的 RAM。

关于c - 用完 ram 声明全局二维数组问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13674574/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com