我需要点击一个I2C设备,我在维基百科上遇到了这个代码.
#define I2CSPEED 100
void I2C_delay(void) {
volatile int v;
int i;
for (i = 0; i < I2CSPEED / 2; ++i) {
v;
}
}
Run Code Online (Sandbox Code Playgroud)
我很困惑
v;
Run Code Online (Sandbox Code Playgroud)
确实.这延迟多久了?
可能这是一个访问volatile
变量强制实际内存读取操作的平台.如果这是真的,那么循环可能至少需要100次内存读取.可能需要更长时间,具体取决于CPU的设计方式.
请注意,在典型计算机可能使用的大多数x86 CPU上,此处不会有实际的内存读取.但据推测,这可能就像Raspberry Pi一样.
包含相同代码的Wikipedia页面清楚地表明它是伪C而不是您实际运行的代码,而是更多编写代码的指南.如果您实际上要使用此代码,则应该使用适合您平台的延迟函数替换该循环.
归档时间: |
|
查看次数: |
63 次 |
最近记录: |