#define LCD_WR_REG(index) ( (* (__IO u16 *) (Bank1_LCD_C) )=( (u16)index) ) ;

2019-08-23 13:54发布

本帖最后由 richthoffen 于 2017-4-3 18:08 编辑

倒数第二行代码#define  LCD_WR_REG(index)     (   (* (__IO u16 *) (Bank1_LCD_C)  )=( (u16)index) ) ;         


问题1    为什么u32位地址可以转化为u16位地址?
问题2    想问下这句语句的赋值,指针没看懂,这和**Bank1_LCD_C=index有不同吗,想问下大家这句语句的意思?

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
6条回答
richthoffen
2019-08-24 03:16
本帖最后由 richthoffen 于 2017-4-3 21:27 编辑
八度空间 发表于 2017-4-3 20:22
1、那不是强制性转换成16位地址,而是将一个16位的数据指针指向那个地址
2、没有强制性编译器会认为是32 ...

是不是地址仍然是32位,而32位地址里的数据格式需要变成16位的?
#define LCD_WR_REG(index) ( (* (__IO u16 *) (Bank1_LCD_C) )=( (u16)index) ) ; 这个语句有点像**p=val,这一点我有点不理解?
麻烦了,向你请教.

一周热门 更多>