OpenEdv-开源电子网

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

正点原子LCD 案例中的LCD_TypeDef结构体的地址分析

[复制链接]

1

主题

3

帖子

0

精华

新手上路

积分
38
金钱
38
注册时间
2012-3-20
在线时间
7 小时
发表于 2022-1-6 20:10:44 | 显示全部楼层 |阅读模式
本帖最后由 黑洞yyh 于 2022-1-7 12:28 编辑

一张图就可以完美展示了,忽略图中的高低字节名称,,只要知道结构体中每个成员是2个字节就行

历程中的代码如下
  1. //LCD地址结构体
  2. typedef struct
  3. {
  4.         vu16 LCD_REG;
  5.         vu16 LCD_RAM;
  6. } LCD_TypeDef;
  7. //使用NOR/SRAM的 Bank1.sector4,地址位HADDR[27,26]=11 A10作为数据命令区分线
  8. //注意设置时STM32内部会右移一位对其!                             
  9. #define LCD_BASE        ((u32)(0x6C000000 | 0x000007FE))
  10. #define LCD             ((LCD_TypeDef *) LCD_BASE)
复制代码
1--由于16位模式下,地址要往右移一位来做对齐,因此就有了如下图
image-20220106194644057.png

这里初学者容易被迷惑的是,地址和数据这两个概念,,这里重点在于地址,

历程中是 define LCD ((LCD_TypeDef *) LCD_BASE) 这个代码
让结构体在内存中的地址指向了0x6c0007FE

如上图所示

又由于内存中的地址是每隔一个字节,地址递增1,

而结构体中,第一个成员的地址就等于结构体的地址,因此LCD_REG的地址就是0x6c0007FE
,结构体每个成员被声明为2个字节,所以第一个成员往下两个字节就是第二个成员的地址,
也就是0x6c0007FE +2 = 0x6C000800

当往地址0x6c0007FE 写入东西的时候,A10位是0,所以芯片会认为是在写命令,而往这个地址写入东西,就是往LCD_REG写入东西,因此程序中直接就操作结构体成员变量LCD_REG来做命令写入操作
当往地址0x6c000800 写入东西的时候,A10位是1,所以芯片会认为是在写数据,而往这个地址写入东西,就是往LCD_RAM写入东西,因此程序中直接就操作结构体成员变量LCD_RAM来做数据写入操作

至于A10位的值怎么算的,这个看下原子哥的视频就明白了。右移了一位导致的,很容易理解。






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

使用道具 举报

15

主题

1061

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
3625
金钱
3625
注册时间
2019-8-14
在线时间
1054 小时
发表于 2022-1-7 10:29:05 | 显示全部楼层
回复 支持 反对

使用道具 举报

13

主题

643

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2432
金钱
2432
注册时间
2019-12-28
在线时间
527 小时
发表于 2022-1-7 16:29:24 | 显示全部楼层
感谢分享
回复 支持 反对

使用道具 举报

14

主题

821

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2100
金钱
2100
注册时间
2021-7-17
在线时间
658 小时
发表于 2022-1-7 18:38:53 | 显示全部楼层
谢谢分享
回复 支持 反对

使用道具 举报

11

主题

56

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
341
金钱
341
注册时间
2017-3-17
在线时间
85 小时
发表于 2022-2-17 10:46:26 | 显示全部楼层
谢谢分享
回复 支持 反对

使用道具 举报

0

主题

17

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
305
金钱
305
注册时间
2020-5-7
在线时间
64 小时
发表于 2022-2-17 11:12:17 | 显示全部楼层
感谢分享
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-20 15:36

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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