一、LCD地址结构体
typedef struct
{
u16 LCD_REG;
u16 LCD_RAM;
} LCD_TypeDef;
//使用NOR/SRAM的 Bank1.sector4,地址位HADDR[27,26]=11 A6作为数据命令区分线
//注意设置时STM32内部会右移一位对其! 111 1110=0X7E
#define LCD_BASE ((u32)(0x6C000000 | 0x0000007E))
#define LCD ((LCD_TypeDef *) LCD_BASE)
1、LCD为指针强制类型转换,指向NE4(Bank1第四区)A6。
2、为什么会右移一位?
因为当Bank1 接的是16 位宽度存储器的时候:HADDR[25:1]-->FSMC[24:0]。
当 Bank1 接的是 8位宽度存储器的时候: HADDR[25:0]-->FSMC[25:0]。
而不论外部接8 位/16位宽设备, FSMC_A[0]永远接在外部设备地址A[0]。这里, TFTLCD使用的是16 位数据宽度,所以HADDR[0]并没有用到,只有HADDR[25:1]是有效的,对应关系变为:HADDR[25:1]--> FSMC[24:0],相当于右移了一位。另外,HADDR[27:26]的设置,是不需要我们干预的,初始化的时候可以选择区。
注:1、HADDR是需要转换到外部存储器的内部AHB地址线。