是这样的,手头有以前51开发板的一块1.8寸小屏,朋友拿来做430可以用,我就想着拿来移植到STM32上,我PB8-12做控制,PC做输出,实际上只用到低八位。
#define LCD_CS  Bout(8) //片选端口 PB8
#define LCD_RS  Bout(9) //数据/命令 PB9
#define LCD_WR  Bout(10) //写数据 PB10
#define LCD_RD  Bout(11) //读数据 PB11
#define LCD_RST  Bout(12) //复位 PB12
#define DATAOUT(x) GPIOC->ODR=x; //数据输出 (TFT屏是8bit数据位,我连接的是低八位管脚)
管脚寄存器设置参考原子哥例程,
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC|RCC_APB2Periph_GPIOB|RCC_APB2Periph_AFIO, ENABLE);
GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable , ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10|GPIO_Pin_9|GPIO_Pin_8|GPIO_Pin_12|GPIO_Pin_11; //GPIO_Pin_8--10
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOB, &GPIO_InitStructure); //GPIOB
GPIO_SetBits(GPIOB,GPIO_Pin_10|GPIO_Pin_9|GPIO_Pin_8|GPIO_Pin_12|GPIO_Pin_11);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_All; //
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOC, &GPIO_InitStructure); //GPIO C
GPIO_SetBits(GPIOC,GPIO_Pin_All);
void WriteDAT(uchar value) // color data
{
LCD_CS = 0;
LCD_RS = 1;
DATAOUT(value);
LCD_WR = 0;
LCD_WR = 1;
LCD_CS = 1;
}
对应的51例程
sbit LCD_RST = P2^7; //RST 引脚定义
sbit LCD_RD = P3^2; //RD 引脚定义
sbit LCD_WR = P3^3; //WR 引脚定义
sbit LCD_RS = P2^5; //RS 引脚定义
sbit LCD_CS = P2^6; //CS 引脚定义
#define DATA P0
void WriteDAT(uchar value) // color data
{
LCD_CS = 0;
LCD_RS = 1;
DATA = value;
LCD_WR = 0;
LCD_WR = 1;
LCD_CS = 1;
}
我想问的是这样移植可行么,白天写好编译了程序是没问题,可一直是白屏~时序的延时我也改成原子哥例程里面的了
初学STM32,感激不尽,先去上课
|