返回信息流现在有这样的需求,对一个32位的寄存器,只写它的高八位,不触动其他24位(因为写操作
会触发spi发送)
本来想用 char *buf =reg_addr;
buf[3]=data;
但是发现无效,对buf[3]操作,跟对buf[0]操作的效果是一样的
这是一条镜像帖。来源:北邮人论坛 / embedded-system / #9291同步于 2010/8/22
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Embedded_System机器人发帖
可以只访问一个32位寄存器中的8bit吗?(已解决)
ArmStrong
2010/8/22镜像同步3 回复
订阅后,新回复会通过你的通知中心匿名送达。
3 条回复
确实,这与硬件有关,看看有否相应的汇编指令。
此外可以看看有没有bitmap功能,也可以达到不读其他位的效果。
【 在 ArmStrong (奶瓶) 的大作中提到: 】
: 现在有这样的需求,对一个32位的寄存器,只写它的高八位,不触动其他24位(因为写操作
: 会触发spi发送)
: 本来想用 char *buf =reg_addr;
: ...................
搞定,其实很简单,只要*(volatile unsigned short *)ptr就可以了,编译器会自动用DT
RH/L 指令,另外能不能只访问一半肯定是要受到cpu结构的限制的,还好DM6446是可以的
,它的32位寄存器基本上都是2个16位的拼起来的
【 在 UZ (柚子) 的大作中提到: 】
: 确实,这与硬件有关,看看有否相应的汇编指令。
: 此外可以看看有没有bitmap功能,也可以达到不读其他位的效果。