此信息来自YOUTUBE的嵌入式编程教程。

指导教师建议使用OR操作将值分配给某个存储位置。

SYSCTL_RCGCGPIO_R    |=   (1U<<5);


我的问题是为什么不只是

SYSCTL_RCGCGPIO_R    =   (1U<<5);


SYSCTL_RCGCGPIO_R的定义是

#define SYSCTL_RCGCGPIO_R       (*((volatile unsigned long *)0x400FE608))


假设SYSCTL_RCGCGPIO_R的内存位置的值为0,
我了解这两个任务是平等的。

但是,第一次分配会不会导致不必要的位操作?

将值写入特定的存储位置时,是否有特殊的原因利用OR按位运算?

最佳答案

本教程建议您使用OR指令而不是直接分配的原因是,由于超出您控制范围的情况,目标值可能与零不同,并且您不想修改除bit之外的任何其他位6。

关于c - 为什么在嵌入式编程中初始化变量时使用“或”位运算?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44056575/

10-11 18:34