1. Find the lcd.h file, and find the following three functions below:
void LCD_WriteReg(u8 LCD_Reg, u16 LCD_RegValue);
void LCD_WriteRAM_Prepare(void);
void LCD_WriteRAM(u16 RGB_Code);
三个函数在首加上u16 pcout = GPIOC->ODR,尾加上GPIOC->ODR = pcout,在改变GPIOC->ODR寄存器的值前将其保留,
直到lcd完成写操作再把值还给GPIOC->ODR寄存器
void LCD_WriteReg(u8 LCD_Reg, u16 LCD_RegValue)
{
u16 pcout = GPIOC->ODR; //声明临时变量,保留ODR
GPIOB->BRR = 0x0200;
GPIOB->BRR = 0x0100;
GPIOB->BSRR = 0x0020;
GPIOC->ODR = LCD_Reg;
GPIOB->BRR = 0x0020;
GPIOB->BSRR = 0x0020;
GPIOB->BSRR = 0x0100;
GPIOC->ODR = LCD_RegValue;
GPIOB->BRR = 0x0020;
GPIOB->BSRR = 0x0020;
GPIOB->BSRR = 0x0100;
GPIOC->ODR = pcout; //恢复ODR
}
void LCD_WriteRAM_Prepare(void)
{
u16 pcout = GPIOC->ODR; //声明临时变量,保留ODR
GPIOB->BRR = 0x0200;
GPIOB->BRR = 0x0100;
GPIOB->BSRR = 0x0020;
GPIOC->ODR = R34;
GPIOB->BRR = 0x0020;
GPIOB->BSRR = 0x0020;
GPIOB->BSRR = 0x0100;
GPIOB->BSRR = 0x0200;
GPIOC->ODR = pcout;//恢复ODR
}
void LCD_WriteRAM(u16 RGB_Code)
{
u16 pcout = GPIOC->ODR;//声明临时变量,保留ODR
GPIOB->BRR = 0x0200;
GPIOB->BSRR = 0x0100;
GPIOB->BSRR = 0x0020;
GPIOC->ODR = RGB_Code;
GPIOB->BRR = 0x0020;
GPIOB->BSRR = 0x0020;
GPIOB->BSRR = 0x0100;
GPIOB->BSRR = 0x0200;
GPIOC->ODR = pcout;//恢复ODR
}
Reference: https://blog.csdn.net/weixin_45775710/article/details/108223836