/* STM32: SPI: LCD — Вы всё делаете не так ! https://habrahabr.ru/post/276605/ */ // передача данных на дисплей void SPI2_SendByte(uint8_t sendData) { while (SPI_I2S_GetFlagStatus(SPI2, SPI_I2S_FLAG_TXE) == RESET); SPI_I2S_SendData(SPI2, sendData); } // определение области для вывода void ili9341c_SetWindow(uint16_t ystart, uint16_t xstart, uint16_t yend, uint16_t xend) { . . . GPIO_ResetBits(GPIOB, GPIO_Pin_12); // DC=0; SPI2_SendByte(LCD_PAGE_ADDR); //ждем пока команда уйдет на дисплей (а не перейдет в shift reg) while (SPI_I2S_GetFlagStatus(SPI2,SPI_FLAG_BSY)!=RESET); GPIO_SetBits(GPIOB, GPIO_Pin_12); // DC=1; SPI2_SendByte(xstart>>8); // данные SPI2_SendByte(xstart&0xFF); // передаются SPI2_SendByte(xend>>8); // в непрерывном SPI2_SendByte(xend&0xFF); // режиме без пауз ! // ждем пока данные передадутся до конца while (SPI_I2S_GetFlagStatus(SPI2,SPI_FLAG_BSY)!=RESET); . . . }