|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区
您需要 登录 才可以下载或查看,没有账号?立即注册
×
以stm32 fsmc第3分区控制为例:
寄存器基地址 = 0X6C00 0000
写指令地址计算:#define LCD_ CMD (*((vu16 *) 0x6c000000+2^0*0= 0X6C00 0000))
写数据地址计算:#define LCD_DATA (*((vu16 *) 0x6c020000+2^p*2)) 注:其中p指数据命令线挂在第几个总线上 当选择不同的地址线时,地址要重新计算
rg:
1:液晶的数据指令控制线挂载在A0上则
#define LCD_ CMD (*(volatileu16 *)0x6c000000)//RS为0,写指令 利用FSMC_A0地址线控制这个引脚 即FSMC_A0=0
#define LCD_ DATA (*(volatileu16 *)0x6c000000+2^0*2)= 0x6c000002 //RS为1,写数据 利用FSMC_A0地址线控制这个引脚 即FSMC_A0=1
2 :又eg:液晶的数据指令控制总线挂载在A16上则
/*A16=1 -- cmd*/
#define LCD_CMD (*((vu16 *) 0x6c000000))
/*A16=0 -- dat*/
#define LCD_DATA (*((vu16 *) 0x6c000000+2^16*2))= 0x6c020000 //A16
写数据时:LCD_DATA = data;
读数据时:data = LCD_DATA;
读命令时:data = LCD_CMD;
写命令时:LCD_CMD=data;
3:又eg:液晶的数据指令总线挂载在A23上则:
#define LCD_CMD(*((vu16 *) 0x6c000000)) //Disp Reg ADDR
#define LCD_DATA(*((vu16 *) 0x6c000000+2^23*2)) =0x6D000000) // A23 PE2
|
|