OpenEdv-开源电子网

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

LCD操作结构体的理解 #define LCD_BASE ((u32)(0x6 C 000000 | 0x0 0 00 0 07E))

[复制链接]

12

主题

39

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
262
金钱
262
注册时间
2019-5-27
在线时间
74 小时
发表于 2019-9-12 21:17:58 | 显示全部楼层 |阅读模式
对下面这些语句的一些理解,不得不说这几条语句写的挺巧妙的,一切都是那么的巧合与合乎常理!!!
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//LCD 操作结构体
typedef struct
{
    vu16 LCD_REG;
    vu16 LCD_RAM;
} LCD_TypeDef;
使用 NOR/SRAM 的 Bank1.sector4, 地址位 HADDR[27,26]=11 A6 作为数据命令区分线
注意 16 位数据总线时, STM32 内部地址会右移一位对齐 !
#define      LCD_BASE     ((u32)(0x6 C 000000 | 0x0 0 00 0 07E))
#define      LCD              ((LCD_TypeDef *) LCD_BASE)
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////

首先看下面的一段话,选自《零死角玩转STM32—基于野火F407[霸天虎]开发板》有助于对上面的理解!!!

       (2) 本工程中使用FSMC_A0 地址线作为命令/数据选择线RS 信号,所以在以上地址范围
内,再选择出使得FSMC_A0 输出高电平的地址,即可控制表示数据,选择出使得
FSMC_A0 输出低电平的地址,即可控制表示命令。
   要使FSMC_A0 地址线为高电平,实质是输出地址信号的第0 位为1 即可,使用
0X6800 0000~0X6BFF FFFF 内的任意地址,作如下运算:
设置地址的第0 位为1: 0X6800 0000 |= (1<<0) = 0x6800 0001
  &#61553; 要使FSMC_A0 地址线为低电平,实质是输出地址信号的第0 位为0 即可,使用
0X6800 0000~0X6BFF FFFF 内的任意地址,作如下运算:
设置地址的第0 位为0: 0X6800 0000 &= ~ (1<<0) = 0x6800 0000
       (3) 但是,以上方法计算的地址还不完全正确,根据《STM32 参考手册》对FSMC 访问
NOR FLASH 的说明,见图 28-27,STM32 内部访问地址时使用的是内部HADDR 总
线,它是需要转换到外部存储器的内部AHB 地址线,它是字节地址(8 位),而存储器
访问不都是按字节访问,因此接到存储器的地址线依存储器的数据宽度有所不同。
end
之后,下面这位老哥就讲的很详细了!
http://www.openedv.com/posts/list/54073.htm


正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-16 11:41

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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