Page 1 of 1

求助!如何在ESP32上获得一个微妙级延时

Posted: Mon Jul 22, 2019 9:44 am
by lqzero
RT

Re: 求助!如何在ESP32上获得一个微妙级延时

Posted: Tue Aug 06, 2019 5:56 am
by jiangteng

Code: Untitled.c Select all


#include "sys/unistd.h"
//....
usleep(1000);
//....

Re: 求助!如何在ESP32上获得一个微妙级延时

Posted: Tue Aug 06, 2019 6:09 am
by Dazza0
其实usleep()底层会调用ets_delay_us(),可以考虑直接用ets_delay_us()

Code: example.cpp Select all


#include "esp32/rom/ets_sys.h"
...
ets_delay_us(1000);

Re: 求助!如何在ESP32上获得一个微妙级延时

Posted: Tue Aug 06, 2019 9:17 am
by lqzero
两个函数都试过啦 ,都不是很准,自己用定时器搞定啦。谢谢两位

Re: 求助!如何在ESP32上获得一个微妙级延时

Posted: Thu Aug 22, 2019 7:57 am
by assinass
;) 用用这个如何,延时100us:

Code: Select all

#include "freertos/FreeRTOS.h"

vTaskDelay(100 / portTICK_PERIOD_MS);

Re: 求助!如何在ESP32上获得一个微妙级延时

Posted: Fri Jan 08, 2021 9:10 am
by dialoger
两个函数都试过啦 ,都不是很准,自己用定时器搞定啦。谢谢两位
你好 请问你是怎么解决的呢

Re: 求助!如何在ESP32上获得一个微妙级延时

Posted: Tue Feb 09, 2021 4:18 pm
by zmlee79
esp32 上有 __rdtsc(), 不用计时器就可用很精确的延时, 特别是关掉中断的时候超级准, 像这样 跑 240M 的时候 delay_clock(240) 就是一微秒, 我经常用这个来延时 0.1 微秒用 。。

static __inline void delay_clock(int ts)
{
uint32_t start, curr;

__asm__ __volatile__("rsr %0, ccount" : "=r"(start));
do
__asm__ __volatile__("rsr %0, ccount" : "=r"(curr));
while (curr - start <= ts);
}

Re: 求助!如何在ESP32上获得一个微妙级延时

Posted: Mon Dec 06, 2021 7:09 am
by muyisoldier
两个函数都试过啦 ,都不是很准,自己用定时器搞定啦。谢谢两位
您好,我也想知道怎么解决的,我用定时器最小只能获取4us的脉冲,再小esp32就不断重启