11月23日。对TFT进行学习。。发现程序代码过于庞大,不方便学习,主要是觉得无从下手。 贴出修改的前5个代码。。 mini板3.5库
看了chinafox 的帖子
http://www.openedv.com/posts/list/6150.htm
希望跟着他一步一步的对TFT有比较全面的了解,希望最后能用库的方式把TFT显示出来。
下面是一个菜鸟的 混乱的学习过程。。大神可以多多指导,看我有什么地方更加需要注意的。。
从新看一下,用寄存器方式写stm32的代码。毕竟之前一直用的是库的方式。
新建MDK工程
10 00000 0000
LCD ID:4535 100 0101 0011 0101
关闭JTAG LCD ID 10
18
3D
453D
D 1101 5 1001
1124 文件夹,用库函数版本实现串口打印LCD ID
1、引脚定义
2、端口初始化
3、写命令
4、写数据
5、读命令
分析JTAG 在TFT的端口定义中,用到了B.C端口。在默认情况下PB3 
B4复用,不能作为IO口,需要
库函数中的定义:
#define GPIO_Remap_SWJ_NoJTRST ((uint32_t)0x00300100) /*!< Full SWJ Enabled (JTAG-DP + SW-DP) but without JTRST */
#define GPIO_Remap_SWJ_JTAGDisable ((uint32_t)0x00300200) /*!< JTAG-DP Disabled and SW-DP Enabled */
#define GPIO_Remap_SWJ_Disable ((uint32_t)0x00300400) /*!< Full SWJ Disabled (JTAG-DP + SW-DP) */
SWD_ENABLE 宏定义 为0x01
//JTAG模式设置,用于设置JTAG的模式
//mode:jtag,swd模式设置;00,全使能;01,使能SWD;10,全关闭;
//CHECK OK
//100818
void JTAG_Set(u8 mode)
{
u32 temp;
temp=mode;
temp<<=25; 对第25位置1
RCC->APB2ENR|=1<<0; //开启辅助时钟
AFIO->MAPR&=0XF8FFFFFF; //清除MAPR的[26:24]
AFIO->MAPR|=temp; //设置jtag模式
}
SWJ_CFG 为010. 
B.3|PB.4可用
PB.3|PB.4持续拉高,不能用
{
for (k=0;k<5;k++)
{
for (i=0;i<320;i++)
{
for (j=0;j<240;j++)
{
LCD_WriteReg(0x0020,j); //X
LCD_WriteReg(0x0021,i); //Y
LCD_WR_REG(0x22);
LCD_WR_DATA(FOX[k]);
//delay_ms(1);
}
}
}
根据程序,先执行j++应该从x坐标变。看到的实验现象不明显。会有一些非常浅的波浪,然后过一点时间才会出现细线。
而且为什么颜色没有发生变化?在扫描完一次j++ i++之后,k也发生变化,而其中划线的颜色也要变化。现象不明显。
原来是 初始化不对啊。。。
LCD_WriteReg(0X15,0X0030);
LCD_WriteReg(0X9A,0X0010);
LCD_WriteReg(0X11,0X0020);
LCD_WriteReg(0X10,0X3428);
LCD_WriteReg(0X12,0X0002);//16
LCD_WriteReg(0X13,0X1038);
delay_ms(40);
LCD_WriteReg(0X12,0X0012);//16
delay_ms(40);
LCD_WriteReg(0X10,0X3420);
LCD_WriteReg(0X13,0X3038);
delay_ms(70);
LCD_WriteReg(0X30,0X0000);
LCD_WriteReg(0X31,0X0402);
LCD_WriteReg(0X32,0X0307);
LCD_WriteReg(0X33,0X0304);
LCD_WriteReg(0X34,0X0004);
LCD_WriteReg(0X35,0X0401);
LCD_WriteReg(0X36,0X0707);
LCD_WriteReg(0X37,0X0305);
LCD_WriteReg(0X38,0X0610);
LCD_WriteReg(0X39,0X0610);
LCD_WriteReg(0X01,0X0100);
LCD_WriteReg(0X02,0X0300);
LCD_WriteReg(0X03,0X1030);//改变方向的
LCD_WriteReg(0X08,0X0808);
LCD_WriteReg(0X0A,0X0008);
LCD_WriteReg(0X60,0X2700);
LCD_WriteReg(0X61,0X0001);
LCD_WriteReg(0X90,0X013E);
LCD_WriteReg(0X92,0X0100);
LCD_WriteReg(0X93,0X0100);
LCD_WriteReg(0XA0,0X3000);
LCD_WriteReg(0XA3,0X0010);
LCD_WriteReg(0X07,0X0001);
LCD_WriteReg(0X07,0X0021);
LCD_WriteReg(0X07,0X0023);
LCD_WriteReg(0X07,0X0033);
LCD_WriteReg(0X07,0X0133);
}
我们学到现在,对于显屏,不外呼就是先找到屏里的像素地址,然后输入这一点的的数据.就成了.