В ЧипеДипе вышли из ситуации элегантно,
обозвав матрицы как smd 0603x4 ))
Смотрел под разными углами, цвет одинаковый. Хотя вы правы там 2 цвета, но они вроде одинаковые, один 16 быт, второй 24 бита. По арифметике одно и тоже и у себя я смотрю одно и тоже, но видно гамма у вашего экрана чуть другая и цвета все-таки на 1 бит в каком то канале отличаются, видимо в зеленом.
#define FON ((2<<11)|(2*2<<5)|2)
#define BkColor_EMWIN (((2*8)<<16)|((2*8)<<8)|(2*8))
Я выложил GFXscope_v3_0_117_54MGz_HX8357C_blue.hex, тут фон чуть синий. Пока подбирал цвет фона, штук 5 опробовал, всегда фон однородный, т.е. формула совпадает, странно что у вас 2 цвета выходит.
Посмотрю завтра, только что приехал домой, автобус сломался в 3-х часах от дома, ждали замену еще три часа ((, нет ни на что сил. Под тем углом, что я описывал, отличия в цветах заметны тренированному глазу, а если смотреть прямо - нет. Зеленый цвет наиболее заметный в тонах, недаром на него выделяют 6 бит из 16-ти.
Кстати, извините что влезаю и за оффтоп, но мне интересно, а зачем Вам 24-битные цвета, ведь в СТМ-ке идеально просто обращение по 16-битной шине получается и контроллер дисплея тоже в 16-битной моде работает, а для приборной графики 16 бит обычно вполне хватает. Или Вы потом перепахиваете 24 бита в 16, или где-то нужны именно 24-битные значения? Как правило всякие иконки, кнопки и прочая добытая BMP графика легко перепахивается в 16-битную с помощью утилиток, например S65-Bitmap Converter.
Я обычно объявляю напрямую, не раскладывая на цвета, выбрал подходящий оттенок и вот так:
#define FON ((uint16_t)0x1082)
Все равно 2 в красном, 4 в зеленом и 2 в синем особо ни о чем не говорит, кроме как это что-то темное, что выбрали для фона.
Но если надо попонятнее соотношение тонов, то можно вообще не полениться и объявить все тона так
#define RED_0 ((uint16_t)(0 << 11)
#define RED_1 ((uint16_t)(1 << 11)
...
#define RED_31 ((uint16_t)(31 << 11)
и т.д. , а потом пользоваться так
#define FON ((uint16_t)(RED_2|GREEN_4|BLUE_2)
Делается один раз и таскается по всем проектам.