首页 > 解决方案 > 有什么方法可以在 STM32 CubeIDE 中以微秒为单位进行延迟?

问题描述

正如我所提到的,我需要延迟 30us 才能以正确的方式初始化我的传感器。

标签: embeddedstm32

解决方案


您只能以阻塞方式进行:

#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 以匹配您的时钟设置。


推荐阅读