此信息来自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/