Код, прочувствовать всю боль, есть куски которые идут подряд, нужно будет объединить и лить разом их в порт, но пока как есть проверьте, стоит ли выделка овчинки.
Спойлер
Код: Выделить всё
#define LCD_RST1 HAL_GPIO_WritePin(TFT_RST_PORT, TFT_RST_PIN, GPIO_PIN_SET)
#define LCD_RST0 HAL_GPIO_WritePin(TFT_RST_PORT, TFT_RST_PIN, GPIO_PIN_RESET)
#define LCD_DC1 HAL_GPIO_WritePin(GPIOD, GPIO_PIN_13, GPIO_PIN_SET)
#define LCD_DC0 HAL_GPIO_WritePin(GPIOD, GPIO_PIN_13, GPIO_PIN_RESET)
#define LCD_CS1 HAL_GPIO_WritePin(TFT_CS_PORT, TFT_CS_PIN, GPIO_PIN_SET)
#define LCD_CS0 HAL_GPIO_WritePin(TFT_CS_PORT, TFT_CS_PIN, GPIO_PIN_RESET)
#define LCD_WR1 HAL_GPIO_WritePin(TFT_WR_PORT, TFT_WR_PIN, GPIO_PIN_SET)
#define LCD_WR0 HAL_GPIO_WritePin(TFT_WR_PORT, TFT_WR_PIN, GPIO_PIN_RESET)
#define LCD_RD1 HAL_GPIO_WritePin(TFT_RD_PORT, TFT_RD_PIN, GPIO_PIN_SET)
#define LCD_RD0 HAL_GPIO_WritePin(TFT_RD_PORT, TFT_RD_PIN, GPIO_PIN_RESET)
#define WR_STROBE { LCD_WR0; LCD_WR1; }
#define RD_STROBE { LCD_RD0; LCD_RD1; }
#define FSMC_D0 GPIO_PIN_14 // PORTD
#define FSMC_D1 GPIO_PIN_15 // PORTD
#define FSMC_D2 GPIO_PIN_0 // PORTD
#define FSMC_D3 GPIO_PIN_1 // PORTD
#define FSMC_D4 GPIO_PIN_7 // PORTE
#define FSMC_D5 GPIO_PIN_8 // PORTE
#define FSMC_D6 GPIO_PIN_9 // PORTE
#define FSMC_D7 GPIO_PIN_10 // PORTE
#define FSMC_D8 GPIO_PIN_11 // PORTE
#define FSMC_D9 GPIO_PIN_12 // PORTE
#define FSMC_D10 GPIO_PIN_13 // PORTE
#define FSMC_D11 GPIO_PIN_14 // PORTE
#define FSMC_D12 GPIO_PIN_15 // PORTE
#define FSMC_D13 GPIO_PIN_8 // PORTD
#define FSMC_D14 GPIO_PIN_9 // PORTD
#define FSMC_D15 GPIO_PIN_10 // PORTD
void WriteData(uint16_t byteToSend)
{
if (byteToSend&(1<<0)) HAL_GPIO_WritePin(GPIOD, FSMC_D0, GPIO_PIN_SET);
else HAL_GPIO_WritePin(GPIOD, FSMC_D0, GPIO_PIN_RESET);
if (byteToSend&(1<<1)) HAL_GPIO_WritePin(GPIOD, FSMC_D1, GPIO_PIN_SET);
else HAL_GPIO_WritePin(GPIOD, FSMC_D1, GPIO_PIN_RESET);
if (byteToSend&(1<<2)) HAL_GPIO_WritePin(GPIOD, FSMC_D2, GPIO_PIN_SET);
else HAL_GPIO_WritePin(GPIOD, FSMC_D2, GPIO_PIN_RESET);
if (byteToSend&(1<<3)) HAL_GPIO_WritePin(GPIOD, FSMC_D3, GPIO_PIN_SET);
else HAL_GPIO_WritePin(GPIOD, FSMC_D3, GPIO_PIN_RESET);
if (byteToSend&(1<<4)) HAL_GPIO_WritePin(GPIOE, FSMC_D4, GPIO_PIN_SET);
else HAL_GPIO_WritePin(GPIOE, FSMC_D4, GPIO_PIN_RESET);
if (byteToSend&(1<<5)) HAL_GPIO_WritePin(GPIOE, FSMC_D5, GPIO_PIN_SET);
else HAL_GPIO_WritePin(GPIOE, FSMC_D5, GPIO_PIN_RESET);
if (byteToSend&(1<<6)) HAL_GPIO_WritePin(GPIOE, FSMC_D6, GPIO_PIN_SET);
else HAL_GPIO_WritePin(GPIOE, FSMC_D6, GPIO_PIN_RESET);
if (byteToSend&(1<<7)) HAL_GPIO_WritePin(GPIOE, FSMC_D7, GPIO_PIN_SET);
else HAL_GPIO_WritePin(GPIOE, FSMC_D7, GPIO_PIN_RESET);
if (byteToSend&(1<<8)) HAL_GPIO_WritePin(GPIOE, FSMC_D8, GPIO_PIN_SET);
else HAL_GPIO_WritePin(GPIOE, FSMC_D8, GPIO_PIN_RESET);
if (byteToSend&(1<<9)) HAL_GPIO_WritePin(GPIOE, FSMC_D9, GPIO_PIN_SET);
else HAL_GPIO_WritePin(GPIOE, FSMC_D9, GPIO_PIN_RESET);
if (byteToSend&(1<<10)) HAL_GPIO_WritePin(GPIOE, FSMC_D10, GPIO_PIN_SET);
else HAL_GPIO_WritePin(GPIOE, FSMC_D10, GPIO_PIN_RESET);
if (byteToSend&(1<<11)) HAL_GPIO_WritePin(GPIOE, FSMC_D11, GPIO_PIN_SET);
else HAL_GPIO_WritePin(GPIOE, FSMC_D11, GPIO_PIN_RESET);
if (byteToSend&(1<<12)) HAL_GPIO_WritePin(GPIOE, FSMC_D12, GPIO_PIN_SET);
else HAL_GPIO_WritePin(GPIOE, FSMC_D12, GPIO_PIN_RESET);
if (byteToSend&(1<<13)) HAL_GPIO_WritePin(GPIOD, FSMC_D13, GPIO_PIN_SET);
else HAL_GPIO_WritePin(GPIOD, FSMC_D13, GPIO_PIN_RESET);
if (byteToSend&(1<<14)) HAL_GPIO_WritePin(GPIOD, FSMC_D14, GPIO_PIN_SET);
else HAL_GPIO_WritePin(GPIOD, FSMC_D14, GPIO_PIN_RESET);
if (byteToSend&(1<<15)) HAL_GPIO_WritePin(GPIOD, FSMC_D15, GPIO_PIN_SET);
else HAL_GPIO_WritePin(GPIOD, FSMC_D15, GPIO_PIN_RESET);
LCD_CS0;
LCD_DC1;
WR_STROBE
LCD_CS1;
}
void WriteComm(uint16_t byteToSend)
{
if (byteToSend&(1<<0)) HAL_GPIO_WritePin(GPIOD, FSMC_D0, GPIO_PIN_SET);
else HAL_GPIO_WritePin(GPIOD, FSMC_D0, GPIO_PIN_RESET);
if (byteToSend&(1<<1)) HAL_GPIO_WritePin(GPIOD, FSMC_D1, GPIO_PIN_SET);
else HAL_GPIO_WritePin(GPIOD, FSMC_D1, GPIO_PIN_RESET);
if (byteToSend&(1<<2)) HAL_GPIO_WritePin(GPIOD, FSMC_D2, GPIO_PIN_SET);
else HAL_GPIO_WritePin(GPIOD, FSMC_D2, GPIO_PIN_RESET);
if (byteToSend&(1<<3)) HAL_GPIO_WritePin(GPIOD, FSMC_D3, GPIO_PIN_SET);
else HAL_GPIO_WritePin(GPIOD, FSMC_D3, GPIO_PIN_RESET);
if (byteToSend&(1<<4)) HAL_GPIO_WritePin(GPIOE, FSMC_D4, GPIO_PIN_SET);
else HAL_GPIO_WritePin(GPIOE, FSMC_D4, GPIO_PIN_RESET);
if (byteToSend&(1<<5)) HAL_GPIO_WritePin(GPIOE, FSMC_D5, GPIO_PIN_SET);
else HAL_GPIO_WritePin(GPIOE, FSMC_D5, GPIO_PIN_RESET);
if (byteToSend&(1<<6)) HAL_GPIO_WritePin(GPIOE, FSMC_D6, GPIO_PIN_SET);
else HAL_GPIO_WritePin(GPIOE, FSMC_D6, GPIO_PIN_RESET);
if (byteToSend&(1<<7)) HAL_GPIO_WritePin(GPIOE, FSMC_D7, GPIO_PIN_SET);
else HAL_GPIO_WritePin(GPIOE, FSMC_D7, GPIO_PIN_RESET);
if (byteToSend&(1<<8)) HAL_GPIO_WritePin(GPIOE, FSMC_D8, GPIO_PIN_SET);
else HAL_GPIO_WritePin(GPIOE, FSMC_D8, GPIO_PIN_RESET);
if (byteToSend&(1<<9)) HAL_GPIO_WritePin(GPIOE, FSMC_D9, GPIO_PIN_SET);
else HAL_GPIO_WritePin(GPIOE, FSMC_D9, GPIO_PIN_RESET);
if (byteToSend&(1<<10)) HAL_GPIO_WritePin(GPIOE, FSMC_D10, GPIO_PIN_SET);
else HAL_GPIO_WritePin(GPIOE, FSMC_D10, GPIO_PIN_RESET);
if (byteToSend&(1<<11)) HAL_GPIO_WritePin(GPIOE, FSMC_D11, GPIO_PIN_SET);
else HAL_GPIO_WritePin(GPIOE, FSMC_D11, GPIO_PIN_RESET);
if (byteToSend&(1<<12)) HAL_GPIO_WritePin(GPIOE, FSMC_D12, GPIO_PIN_SET);
else HAL_GPIO_WritePin(GPIOE, FSMC_D12, GPIO_PIN_RESET);
if (byteToSend&(1<<13)) HAL_GPIO_WritePin(GPIOD, FSMC_D13, GPIO_PIN_SET);
else HAL_GPIO_WritePin(GPIOD, FSMC_D13, GPIO_PIN_RESET);
if (byteToSend&(1<<14)) HAL_GPIO_WritePin(GPIOD, FSMC_D14, GPIO_PIN_SET);
else HAL_GPIO_WritePin(GPIOD, FSMC_D14, GPIO_PIN_RESET);
if (byteToSend&(1<<15)) HAL_GPIO_WritePin(GPIOD, FSMC_D15, GPIO_PIN_SET);
else HAL_GPIO_WritePin(GPIOD, FSMC_D15, GPIO_PIN_RESET);
LCD_CS0;
LCD_DC0;
WR_STROBE;
LCD_DC1;
LCD_CS1;
}