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
#include "sys/unistd.h"
//....
usleep(1000);
//....
Re: 求助!如何在ESP32上获得一个微妙级延时
Posted: Tue Aug 06, 2019 6:09 am
by ESP_Dazz
其实
usleep()底层会调用
ets_delay_us(),可以考虑直接用
ets_delay_us()
#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
lqzero wrote: ↑Tue Aug 06, 2019 9:17 am
两个函数都试过啦 ,都不是很准,自己用定时器搞定啦。谢谢两位
你好 请问你是怎么解决的呢
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
lqzero wrote: ↑Tue Aug 06, 2019 9:17 am
两个函数都试过啦 ,都不是很准,自己用定时器搞定啦。谢谢两位
您好,我也想知道怎么解决的,我用定时器最小只能获取4us的脉冲,再小esp32就不断重启