/** * Разработка → 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); while (SPI_I2S_GetFlagStatus(SPI2,SPI_FLAG_BSY)!=RESET); //ждем пока команда уйдет на дисплей (а не перейдет в shift reg) 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); // ждем пока данные передадутся до конца . . . }