From 845598d801d3a971efd97bccb2679a327a7734d2 Mon Sep 17 00:00:00 2001 From: Mikhail Date: Wed, 24 Jun 2026 21:38:32 +0300 Subject: [PATCH] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=BC=D0=B5=D0=BB=D0=BA=D0=B8=D1=85?= =?UTF-8?q?=20=D0=BD=D0=B5=D0=B4=D0=BE=D1=87=D0=B5=D1=82=D0=BE=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Src/DS_ST7789V.c | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/Src/DS_ST7789V.c b/Src/DS_ST7789V.c index 7d4b26f..19987f8 100644 --- a/Src/DS_ST7789V.c +++ b/Src/DS_ST7789V.c @@ -57,8 +57,6 @@ void DS_ST7789V_Init(DS_ST7789V *lcd, SPI_HandleTypeDef *hspi, { lcd->hspi = hspi; - /* Автоматическая привязка портов на основе сгенерированных CubeMX меток (User - * Labels) */ lcd->CS.Port = cs_port; lcd->CS.Pin = cs_pin; lcd->DC.Port = dc_port; @@ -165,7 +163,7 @@ void DS_ST7789V_FillRect(DS_ST7789V *lcd, uint16_t x, uint16_t y, uint16_t w, ui uint32_t current_chunk_pixels = (pixels_left > pixels_in_chunk) ? pixels_in_chunk : pixels_left; uint32_t bytes_to_send = current_chunk_pixels * 2; - // Отправка всего блока на максимальной скорости аппаратного SPI + HAL_SPI_Transmit(lcd->hspi, chunk_buffer, bytes_to_send, HAL_MAX_DELAY); pixels_left -= current_chunk_pixels; @@ -180,7 +178,7 @@ void DS_ST7789V_DrawPixel(DS_ST7789V *lcd, uint16_t x, uint16_t y, uint16_t colo DS_ST7789V_SetAddressWindow(lcd, x, y, x, y); - uint8_t color_bytes[2]; // Явно объявляем массив из 2 элементов + uint8_t color_bytes[2]; color_bytes[0] = (color >> 8) & 0xFF; // Старший байт (MSB) color_bytes[1] = color & 0xFF; // Младший байт (LSB) @@ -251,9 +249,9 @@ void DS_ST7789V_DrawString(DS_ST7789V *lcd, uint16_t x, uint16_t y, const char * } void DS_ST7789V_DrawInt(DS_ST7789V *lcd, uint16_t x, uint16_t y, int32_t num, uint16_t color, uint16_t bg_color, uint8_t scale) { - char buf[16]; // ИСПРАВЛЕНО: жестко выделили массив на 16 символов + char buf[16]; int i = 14; - buf[15] = '\0'; // ИСПРАВЛЕНО: корректный знак конца строки + buf[15] = '\0'; uint8_t is_negative = 0; if (num < 0) { @@ -279,9 +277,9 @@ void DS_ST7789V_DrawInt(DS_ST7789V *lcd, uint16_t x, uint16_t y, int32_t num, ui void DS_ST7789V_DrawFloat(DS_ST7789V *lcd, uint16_t x, uint16_t y, float num, uint8_t decimals, uint16_t color, uint16_t bg_color, uint8_t scale) { - char buf[32]; // ИСПРАВЛЕНО: жестко выделили массив на 32 символа + char buf[32]; int i = 30; - buf[31] = '\0'; // ИСПРАВЛЕНО: корректный знак конца строки + buf[31] = '\0'; uint8_t is_negative = 0; if (num < 0) { @@ -305,14 +303,14 @@ void DS_ST7789V_DrawFloat(DS_ST7789V *lcd, uint16_t x, uint16_t y, float num, ui } int left = i + 1; - int right = 30; // ИСПРАВЛЕНО: индекс конца массива изменен под размер 32 + int right = 30; while (left < right) { char temp = buf[left]; buf[left] = buf[right]; buf[right] = temp; left++; right--; } - i = 30 - decimals; // ИСПРАВЛЕНО + i = 30 - decimals; buf[i--] = '.'; }