|
使用8位色的优势是使用H7的内部SRAM即可驱动大分辨率显示屏,而且很多控制类的应用,8位色足够用。
通过0到255的索引值实现24bit颜色的互转,即1个索引值对应一个24bit颜色值,然后将这256个颜色值存储到LTDC的LUT寄存器里面。
- uint32_t LCD_Index2Color_233(uint32_t Index)
- {
- uint32_t r, g, b;
- r = (Index & 7) * 255 / 7;
- g = ((Index >> 3) & 7) * 255 / 7;
- b = ((Index >> 6) & 3) * 85;
- return b + (g << 8) + (((uint32_t)r) << 16);
- }
- uint32_t LCD_Color2Index_233(uint32_t Color)
- {
- int r, g, b;
-
- b = Color & 255;
- g = (Color >> 8 ) & 255;
- r = Color >> 16;
- b = (r * 7 + 127) / 255;
- g = (g * 7 + 127) / 255;
- r = (b + 42) / 85;
- return b + (g << 3) + (r << 6);
- }
复制代码
比如存储到图层1:
- for (i = 0; i < 256; i++)
- {
- LUT = LCD_Index2Color_233(i);
- }
- HAL_LTDC_ConfigCLUT(&hltdc_F, LUT, 256, LTDC_LAYER_1);
- HAL_LTDC_EnableCLUT(&hltdc_F, LTDC_LAYER_1);
复制代码 |
|