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);
相关推荐
十五年专注C++开发5 小时前
C++之std::numeric_limits介绍
开发语言·c++·limits
2501_925963385 小时前
Hi3516 + WS73 SDIO Wi-Fi 适配笔记
java·开发语言
CoderYanger5 小时前
视频切割脚本(Python版)
linux·开发语言·windows·后端·python·程序人生·职场和发展
辞旧 lekkk5 小时前
CMake工程指南(一)
linux·运维·服务器·开发语言·qt·学习·萌新
小七在进步5 小时前
数据结构:用栈实现队列
开发语言·数据结构
KaMeidebaby5 小时前
卡梅德生物技术快报|噬菌体筛选:噬菌体筛选工程化优化方案:基于侵染全链条参数调控与水环境应用验证
java·开发语言·人工智能·机器学习·spark
geovindu5 小时前
go: Floyd-Warshall Algorithms
开发语言·后端·算法·golang
CoderYanger5 小时前
视频裁剪+缩放+自动添加水印脚本(Python版)
开发语言·后端·python·程序人生·职场和发展·音视频·学习方法
酷酷的身影5 小时前
Managers/APConfigManager.cs
开发语言·ui·c#
拳里剑气5 小时前
C++算法:优先级队列
开发语言·c++·算法·优先级队列