你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

SSD1289写寄存器函数

[复制链接]
emdeen 提问时间:2014-3-21 21:18 /
#define Bank1_LCD_Reg ((u32)0x6c000000)
void LCD_WR_REG(u16 data)
{
*(vu16 *)(Bank1_LCD_Reg) = data;
}
这是一个例程的关于SSD1289写寄存器的一个函数,有两点不明白:
 
1、这个 (u32)0x6c000000中的0x6c000000代表什么,为什么有这个数字,难道涉及SSD1289的寄存器地址范围?
2、*(vu16 *)(Bank1_LCD_Reg) = data;这句话为什么能实现写数据的目的,*(*vu16) 是什么意思?
收藏 评论6 发布时间:2014-3-21 21:18

举报

6个回答
story_xjj 回答时间:2014-3-25 11:16:28

RE:SSD1289写寄存器函数

1、是地址,根据你将LCD驱动器挂接的外部总线bank有关。
2、vu16 * 是将后面的地址变成一个指向16位整形变量的指针,意思是访问这个地址时是按照16位位宽来访问的,就是数据总线上一次出现16位数据,前面加个*表示访问地址指向的内容。所以*(vu16*)表示写入或读取地址指向的空间一个16位(整形)内容。
wkuang 回答时间:2014-3-25 23:05:05

RE:SSD1289写寄存器函数

#define Bank1_LCD_Reg ((u32)0x6c000000)
void LCD_WR_REG(u16 data)
{
*(vu16 *)(Bank1_LCD_Reg) = data;
}
这是一个例程的关于SSD1289写寄存器的一个函数,有两点不明白:

1、这个 (u32)0x6c000000中的0x6c000000代表什么,为什么有这个数字,难道涉及SSD1289的寄存器地址范围?
2、*(vu16 *)(Bank1_LCD_Reg) = data;这句话为什么能实现写数据的目的,*(*vu16) 是什么意思?

---------------------------
如果没有猜错你的LCD是并口驱动,而且LCD是挂在在FSMC总线上的,FSMC总线总共分为4段地址,可以驱动NOR Flash、 LCD等外设,这四段地址在STM32的寄存器映射上可以找到,其中0x6c000000就代表一个FSMC 总线的地址。
你可以把LCD想象成一个存储空间,就相当于往这个存储空间存储数据,存储的数据就在屏幕上显示出来。
dlyt03 回答时间:2014-3-27 13:20:47

RE:SSD1289写寄存器函数

看程序0x6c000000就是代表一个地址,vu16或许是是volatile unsigned short,最好追踪去看一下原型
有缘于你 回答时间:2014-3-27 15:32:48

RE:SSD1289写寄存器函数

你的LCD是挂在在FSMC总线上, 0x6c000000代表地址
深秋独影 回答时间:2014-3-30 20:21:15

RE:SSD1289写寄存器函数

0x6c000000就是一个地址
feiante-155820 回答时间:2014-4-12 16:46:10

RE:SSD1289写寄存器函数

Bank1_LCD_Reg ((u32)0x6c000000),从你的Bank1这几个字看出你的LCD应该是挂在FSMC上的,((u32)0x6c000000)是Bank的地址。
*(vu16 *):括号里面的是把后面的数据强制转换成vu16的指针类型,在前面加个*,就是指vu16指针所指的内容。

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版