230.C语言循环的相关延时计算

复制代码
// 方法1:明确的延时
#define DELAY_US(us) { \
    volatile uint32_t count = (us) * (CPU_FREQ_MHZ); \
    while(count--); \
}

AXI_REG_WRITE(RST, 1);
DELAY_US(1);  // 1微秒复位脉冲
AXI_REG_WRITE(RST, 0);
DELAY_US(1);
AXI_REG_WRITE(RST, 1);

// 方法2:防止优化的空循环
void delay_us(uint32_t us) {
    volatile uint32_t count = us * 100;  // 粗略延时
    while(count--);
}

// 方法3:使用DSB指令确保写完成
AXI_REG_WRITE(RST, 1);
__DSB();  // Data Synchronization Barrier
AXI_REG_WRITE(RST, 0);
__DSB();
AXI_REG_WRITE(RST, 1);
相关推荐
小小龙学IT4 小时前
Go 并发模式深度解析:Fan-out/Fan-in 高效处理大规模数据流
开发语言·后端·golang
a83331964 小时前
c语言课程设计小游戏,c语言小游戏设计案例
c语言·开发语言
valan liya4 小时前
C++ 继承
开发语言·c++
路远_64 小时前
Token、上下文、Prompt:大模型应用开发的三个基础概念
开发语言·人工智能
零点一顿微胖4 小时前
[Agent] 初始化Agent服务 Rust版
开发语言·网络·rust
两年半的个人练习生^_^4 小时前
Java String 全面解析:从源码到常量池,再到面试高频题
java·开发语言
Ws_4 小时前
WPF 面试题 + 参考答案,偏 C# 桌面端开发高频。
开发语言·c#·wpf
程序猿编码4 小时前
如何把远程文件变化“骗“成本地inotify事件:一个LD_PRELOAD钩子
c语言·开发语言·网络·tcp/ip·安全
星空椰12 小时前
Python 面向对象高级:继承与类定义详解
开发语言·python
白露与泡影13 小时前
2026大厂Java面试题大全!牛客网最新版
java·开发语言