任务场景:

使用一块(非正点原子的)STM32F407核心板,外接正点原子4.3寸电容屏时遇到的问题


问题描述:

反复检查硬件接口对上之后,还是会出现开机屏幕闪一下,然后全黑的问题

并且,同一份代码,接在正点原子开发板上可以正常使用,接在另一块不是正点原子的核心板上就不能使用。


调试找问题:

逐行运行调试代码,进入 LCD_Init() 函数

GPIO配置完之后屏幕会正常亮白色,但是跳出 LCD_Init() 之后就变黑,说明初始化配置下面的代码中有不兼容的地方。

逐行调试到 LCD_Init() 最下面三行函数的时候找到了问题——执行完 LCD_LED=0 之后屏幕灭了。

void LCD_Init(void)
{ 
	......
	// 最下面三行
	LCD_Display_Dir(0);		//横屏(1)还是竖屏(0)
	LCD_LED=0;				//点亮背光
	LCD_Clear(WHITE);
}  

在头文件 lcd.h 中可以找到 LCD_LED 的宏定义:

///	 
//-----------------LCD端口定义---------------- 
#define	LCD_LED PBout(15)  		//LCD背光    		 PB15 

对应的原理图引脚是:

而查了一下我那块不是正点原子的核心板的LCD接口原理图之后:

发现这块核心板的 LCD_BL 上接了一个三极管的反相电路!!!

 

解决方案:

于是,把 LCD_LED=0 改为 LCD_LED=1 即可解决问题。

void LCD_Init(void)
{ 
	......
	// 最下面三行
	LCD_Display_Dir(0);		//横屏(1)还是竖屏(0)
	LCD_LED=1;				//点亮背光
	LCD_Clear(WHITE);
}