Спасибо, не дочитал. Сейчас все нормально отпускает вовремя. После очистки экрана он заливается черным цветом. Буду проверять настройки.
Код:
//----------
void PCD8544_Init()
{
for(uint16_t i = 0; i < BUFFER_SIZE; i++)
{
PCD8544_Buffer[i] = 0x00;
}
uint8_t buffer[6] =
{
0x21,
0xC8,
0x06,
0x13,
0x20,
0x0C
};
PCD8544_SendData(buffer, sizeof(buffer), TYPE_CMD);
}
//----------
void LCD_Clear()
{
LCD_Goto(0, 0);
uint8_t buffer[BUFFER_SIZE];
for(uint16_t i = 0; i < BUFFER_SIZE; i++)
{
buffer[i] = 0x00;
}
PCD8544_SendData(buffer, BUFFER_SIZE, TYPE_DATA);
LCD_Goto(0, 0);
}
//----------
void LCD_Goto(uint8_t y, uint8_t x)
{
y |= 0x40;
x |= 0x80;
uint8_t buffer[2] =
{
x, y
};
PCD8544_SendData(buffer, 2, TYPE_CMD);
}
//----------
void PCD8544_SendData(const uint8_t* buffer, const uint16_t size, const type_t cmd)
{
pin_reset(PCD8544_CE);
if(cmd == TYPE_CMD)
{
pin_reset(PCD8544_DC);
}
else
{
pin_set(PCD8544_DC);
}
DMA1_Channel3->CMAR = (uint32_t)buffer;
DMA1_Channel3->CNDTR = size;
DMA1_Channel3->CCR |= DMA_CCR1_EN;
}
Добавлено after 9 minutes:Снова ошибся и был включен режим инверсии

. Спасибо.