Вот спасибо! Сейчас ознакомлюсь
Добавлено after 5 minutes 48 seconds:
Получается пересылая 24 бита я как бы пересылал 18 бит, а 16 так и были 16, правильно?

Код: Выделить всё
void WP(uint16_t Xpos, uint16_t Ypos)
{
uint8_t parameter1[4], counter1, r, g, b, r8,g8,b8, i1;
int ih, i;
uint32_t RGBCode;
parameter1[0] = 0x00;
parameter1[1] = 0x00+Xpos;
parameter1[2] = 0x00;
parameter1[3] = 0xEF+Xpos;
WriteReg(0x2A, parameter1, 4);
parameter1[2] = 0x00;
parameter1[0] = 0x00;
i=57600; ih=0;
for(counter1 = 0; counter1 <240; counter1++)
{
parameter1[1] = 0x00 + counter1+Ypos;// +y
parameter1[3] = 0xEF + counter1+Ypos;// +y
WriteReg(0x2B, parameter1, 4);
WriteReg(0x2C, (uint8_t*)NULL, 0);
for(i1 = 0; i1 <240; i1++)
{
if (i>0)ih = i*3;else ih=3;//i*3;
r8 = picture1[ih-1]; g8 = picture1[ih-2]; b8 = picture1[ih];
r = ((r8 & 0xF8) >> 3);
g = ((g8 & 0xFC) >> 2);
b = ((b8 & 0xF8) >> 3);
RGBCode = ((uint32_t)(r) << 11) + ((uint32_t)(g) << 5) + ((uint32_t)(b) << 0);
i--;
FMC_BANK1->RAM = RGBCode;
}
}
poligon (0, 0, 45, 15, 0xFFFF);//demo of
}Код: Выделить всё
void WP(uint16_t Xpos, uint16_t Ypos)
{
uint8_t parameter1[4], counter1, r, g, b, r8,g8,b8, i1;
int ih, i;
uint32_t RGBCode;
parameter1[0] = 0x00;
parameter1[1] = 0x00+Xpos;
parameter1[2] = 0x00;
parameter1[3] = 0xEF+Xpos;
WriteReg(0x2A, parameter1, 4);
parameter1[2] = 0x00;
parameter1[0] = 0x00;
i=57600; ih=0;
for(counter1 = 0; counter1 <240; counter1++)
{
parameter1[1] = 0x00 + counter1+Ypos;// +y
parameter1[3] = 0xEF + counter1+Ypos;// +y
WriteReg(0x2B, parameter1, 4);
WriteReg(0x2C, (uint8_t*)NULL, 0);
for(i1 = 0; i1 <240; i1++)
{
i--;
FMC_BANK1->RAM = picture[i];
}
}
poligon (0, 0, 45, 15, 0xFFFF);//demo of
}Код: Выделить всё
void drawBitmap(const uint16_t* arr, uint32_t x, uint32_t y, uint32_t width, uint32_t height)
{
setWindow(x, y, width, height);
for (uint32_t i = 0; i < width * height; i++)
FMC_BANK1->RAM = *arr++;
}
Без разницы какая ось, если задать окно шириной 1 пиксель, то можно нарисовать вертикальную линию точно так же, как и горизонтальную.С Линиями проще но только по оси х, там один курсор + wreg выбора линии и потом до конца строки только цвет кидаешь.
Код: Выделить всё
r = ((r8 & 0xF8) >> 3);
r = r8 >> 3;Код: Выделить всё
r = ((r8 & 0xF8) >> 3);
r = r8 >> 3;