金牌会员
 
- 积分
- 2075
- 金钱
- 2075
- 注册时间
- 2014-2-20
- 在线时间
- 284 小时
|
发表于 2016-4-1 11:48:56
|
显示全部楼层
[mw_shl_code=c,true]typedef struct
{
vu16 LCD_REG;
vu16 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)[/mw_shl_code]
这里利用结构体内部成员对齐的规则 LCD_REG地址:0x6C00007E,bit7为0,vu16两字节对齐,所以LCD_RAM地址为0x6C000080,bit7为1。
A6用于区分数据和命令,A6为1时写数据,A6为0时写命令。HADDR[25:1]对应FSMC_A[24:0],所以bit7是用于区分命令与数据
LCD->LCD_REG=lcddev.wramcmd; //LCD->LCD_REG是一个地址,bit7为0,对应起来A6(即RS)=0 所以写命令
LCD->LCD_RAM = RGB_Code;//同样,LCD->LCD_RAM也是一个地址,bit7为1,对应起来A6(即RS)=1所以是写数据
综上,结构体LCD对应RS引脚
至于其他几个引脚是FMSC来控制的。
感觉自己说得好乱,不过希望能够帮助你。 |
|