OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 11746|回复: 5

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

[复制链接]

558

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
164867
金钱
164867
注册时间
2010-12-1
在线时间
2099 小时
发表于 2017-8-1 18:01:32 | 显示全部楼层 |阅读模式
我们例程,原来是:
[mw_shl_code=c,true]//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)[/mw_shl_code]
发现大家比较难理解,改为直接访问地址方式:
[mw_shl_code=cpp,true]#define TFT_REG  * (vu16*)(0X6C000000|(0<<11))
#define TFT_RAM  * (vu16*)(0X6C000000|(1<<11))[/mw_shl_code]
改成这种方式后,就比较直白了,方便初学者掌握。
代码可以写成:
[mw_shl_code=c,true]//写寄存器函数
//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
}[/mw_shl_code]
实验13 TFTLCD显示实验.rar (326.94 KB, 下载次数: 240)
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

1

主题

10

帖子

0

精华

新手上路

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

使用道具 举报

15

主题

65

帖子

0

精华

初级会员

Rank: 2

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

使用道具 举报

5

主题

115

帖子

0

精华

高级会员

Rank: 4

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

使用道具 举报

53

主题

608

帖子

0

精华

高级会员

Rank: 4

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

使用道具 举报

17

主题

102

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
332
金钱
332
注册时间
2021-1-19
在线时间
56 小时
发表于 2021-2-27 22:52:20 | 显示全部楼层
都2021年了,建议例程加上这个
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-5-14 16:50

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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