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

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个回答
我爱下载 回答时间: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管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版