BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / embedded-system / #9291同步于 2010/8/22
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Embedded_System机器人发帖

可以只访问一个32位寄存器中的8bit吗?(已解决)

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