OpenEdv-开源电子网

 找回密码
 立即注册

扫一扫,访问微社区

正点原子新作:阿波罗STM32F767&F429&探索者STM32F4开发板&赶快来下载资料哦。

查看: 398|回复: 4

[STM32练习题] 将LCD结构体改成直接操作地址形式,驱动LCD

[复制链接]

  离线 

482

主题

8万

帖子

30

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
117143
金钱
117143
注册时间
2010-12-1
在线时间
898 小时
发表于 2017-8-1 18:01:32 | 显示全部楼层 |阅读模式
正点原子公众号
我们例程,原来是:
[C] 纯文本查看 复制代码
//LCD地址结构体
typedef struct
{
	vu16 LCD_REG;
	vu16 LCD_RAM;
} LCD_TypeDef;
//使用NOR/SRAM的 Bank1.sector4,地址位HADDR[27,26]=11 A10作为数据命令区分线 
//注意设置时STM32内部会右移一位对其! 			    
#define LCD_BASE        ((u32)(0x6C000000 | 0x000007FE))
#define LCD             ((LCD_TypeDef *) LCD_BASE)

发现大家比较难理解,改为直接访问地址方式:
[C++] 纯文本查看 复制代码
#define TFT_REG  * (vu16*)(0X6C000000|(0<<11))
#define TFT_RAM  * (vu16*)(0X6C000000|(1<<11))

改成这种方式后,就比较直白了,方便初学者掌握。
代码可以写成:
[C] 纯文本查看 复制代码
//写寄存器函数
//regval:寄存器值
void LCD_WR_REG(u16 regval)
{   
	TFT_REG=regval;//写入要写的寄存器序号	 
}
//写LCD数据
//data:要写入的值
void LCD_WR_DATA(u16 data)
{	 
	TFT_RAM=data;		 
}
//读LCD数据
//返回值:读到的值
u16 LCD_RD_DATA(void)
{
	vu16 ram;			//防止被优化
	ram=TFT_RAM;	
	return ram;	 
}					   
//写寄存器
//LCD_Reg:寄存器地址
//LCD_RegValue:要写入的数据
void LCD_WriteReg(u16 LCD_Reg,u16 LCD_RegValue)
{	
	TFT_REG = LCD_Reg;		//写入要写的寄存器序号	 
	TFT_RAM = LCD_RegValue;//写入数据	    		 
}	   
//读寄存器
//LCD_Reg:寄存器地址
//返回值:读到的数据
u16 LCD_ReadReg(u16 LCD_Reg)
{										   
	LCD_WR_REG(LCD_Reg);		//写入要读的寄存器序号
	delay_us(5);		  
	return LCD_RD_DATA();		//返回读到的值
}   
//开始写GRAM
void LCD_WriteRAM_Prepare(void)
{
 	LCD->LCD_REG=lcddev.wramcmd;	  
}	 
//LCD写GRAM
//RGB_Code:颜色值
void LCD_WriteRAM(u16 RGB_Code)
{							    
	LCD->LCD_RAM = RGB_Code;//写十六位GRAM
}

实验13 TFTLCD显示实验.rar (326.94 KB, 下载次数: 60)
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
微信公众平台:正点原子   点击扫码添加
回复

使用道具 举报

  离线 

1

主题

10

帖子

0

精华

新手上路

Rank: 1

积分
28
金钱
28
注册时间
2017-7-20
在线时间
6 小时
发表于 2017-8-1 18:03:20 | 显示全部楼层
回复 支持 反对

使用道具 举报

  离线 

15

主题

65

帖子

0

精华

初级会员

Rank: 2

积分
125
金钱
125
注册时间
2015-4-28
在线时间
79 小时
发表于 2017-8-1 18:20:51 | 显示全部楼层
顶     
回复 支持 反对

使用道具 举报

  离线 

3

主题

49

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
306
金钱
306
注册时间
2014-9-29
在线时间
63 小时
发表于 2017-8-3 09:34:28 | 显示全部楼层
改了之后地址不相同了?
回复 支持 反对

使用道具 举报

  离线 

53

主题

609

帖子

0

精华

高级会员

Rank: 4

积分
890
金钱
890
注册时间
2013-3-29
在线时间
18 小时
发表于 2017-8-6 15:17:27 | 显示全部楼层
这个教的非常仔细和认真。我后悔没有去报名、
学电子,学音乐!!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则




QQ|联系我们|手机版|官方淘宝店|新浪微博|微信公众平台|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2017-11-20 05:47

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表
/* */