embedded - 有什么方法可以在 STM32 CubeIDE 中以微秒为单位进行延迟?
问题描述
正如我所提到的,我需要延迟 30us 才能以正确的方式初始化我的传感器。
解决方案
您只能以阻塞方式进行:
#define SYSTICKCLOCK 120000000ULL
#define SYSTICKPERUS (SYSTICKCLOCK / 1000000UL)
// delay has to constant expression
static void inline __attribute__((always_inline)) delayus(unsigned delay)
{
uint32_t ticks = SYSTICKPERUS * delay;
uint32_t start_tick = SysTick -> VAL;
while(SysTick -> VAL - start_tick < ticks);
}
当然,您需要定义 SYSTICKCLOCK 以匹配您的时钟设置。
推荐阅读
- d3.js - 任何 js 库中带有 4 个标签(对面图)的散点图?
- html - 带有搜索栏的 EJS 表单 GET 请求未按预期工作
- r - 仅产生一组的 ntile 函数
- javascript - 当用户单击 Mozilla Firefox 的后退按钮时如何避免多个更改框
- google-apps-script - 如何将数组发送到 Google 表格范围?
- java - 删除 jar 文件时优雅地关闭 jvm
- azure - 复制 Azure Application Insights 仪表板并指向新的 Application Insights 实例
- rspec - 测试是否在控制器中调用了来自另一个范围的方法
- python-3.x - pandas:重新采样和计算正确的平均值
- angular - 在打字稿中比较字符串时出现问题