Исправление мелких недочетов
This commit is contained in:
@@ -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--] = '.';
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user