Исправление мелких недочетов

This commit is contained in:
2026-06-24 21:38:32 +03:00
parent 20524e41c1
commit 845598d801

View File

@@ -57,8 +57,6 @@ void DS_ST7789V_Init(DS_ST7789V *lcd, SPI_HandleTypeDef *hspi,
{ {
lcd->hspi = hspi; lcd->hspi = hspi;
/* Автоматическая привязка портов на основе сгенерированных CubeMX меток (User
* Labels) */
lcd->CS.Port = cs_port; lcd->CS.Port = cs_port;
lcd->CS.Pin = cs_pin; lcd->CS.Pin = cs_pin;
lcd->DC.Port = dc_port; 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 current_chunk_pixels = (pixels_left > pixels_in_chunk) ? pixels_in_chunk : pixels_left;
uint32_t bytes_to_send = current_chunk_pixels * 2; uint32_t bytes_to_send = current_chunk_pixels * 2;
// Отправка всего блока на максимальной скорости аппаратного SPI
HAL_SPI_Transmit(lcd->hspi, chunk_buffer, bytes_to_send, HAL_MAX_DELAY); HAL_SPI_Transmit(lcd->hspi, chunk_buffer, bytes_to_send, HAL_MAX_DELAY);
pixels_left -= current_chunk_pixels; 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); 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[0] = (color >> 8) & 0xFF; // Старший байт (MSB)
color_bytes[1] = color & 0xFF; // Младший байт (LSB) 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) { 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; int i = 14;
buf[15] = '\0'; // ИСПРАВЛЕНО: корректный знак конца строки buf[15] = '\0';
uint8_t is_negative = 0; uint8_t is_negative = 0;
if (num < 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) { 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; int i = 30;
buf[31] = '\0'; // ИСПРАВЛЕНО: корректный знак конца строки buf[31] = '\0';
uint8_t is_negative = 0; uint8_t is_negative = 0;
if (num < 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 left = i + 1;
int right = 30; // ИСПРАВЛЕНО: индекс конца массива изменен под размер 32 int right = 30;
while (left < right) { while (left < right) {
char temp = buf[left]; char temp = buf[left];
buf[left] = buf[right]; buf[left] = buf[right];
buf[right] = temp; buf[right] = temp;
left++; right--; left++; right--;
} }
i = 30 - decimals; // ИСПРАВЛЕНО i = 30 - decimals;
buf[i--] = '.'; buf[i--] = '.';
} }