В предыдущей части урока мы начали писать тесты для проверки работы дисплея, добавляя при этом дополнительные служебные функции. Вернёмся в файл spi_ili9341.c и и выше функции TFT9341_ini добавим функцию вывода прямой линии на экран
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
|
//------------------------------------------------------------------ void TFT9341_DrawLine(spi_device_handle_t spi, uint16_t color, uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2) { int steep = abs(y2-y1)>abs(x2-x1); if(steep) { swap(x1,y1); swap(x2,y2); } if(x1>x2) { swap(x1,x2); swap(y1,y2); } int dx,dy; dx=x2-x1; dy=abs(y2-y1); int err=dx/2; int ystep; if(y1<y2) ystep=1; else ystep=-1; for(;x1<=x2;x1++) { if(steep) TFT9341_DrawPixel(spi, y1,x1,color); else TFT9341_DrawPixel(spi, x1,y1,color); err-=dy; if(err<0) { y1 += ystep; err=dx; } } } //------------------------------------------------------------------ |
Все эти функции…