求助!如何在ESP32上获得一个微妙级延时
Re: 求助!如何在ESP32上获得一个微妙级延时
Code: Untitled.c Select all
#include "sys/unistd.h"
//....
usleep(1000);
//....
Re: 求助!如何在ESP32上获得一个微妙级延时
其实usleep()底层会调用ets_delay_us(),可以考虑直接用ets_delay_us()
Code: example.cpp Select all
#include "esp32/rom/ets_sys.h"
...
ets_delay_us(1000);
Re: 求助!如何在ESP32上获得一个微妙级延时
Code: Select all
#include "freertos/FreeRTOS.h"
vTaskDelay(100 / portTICK_PERIOD_MS);Re: 求助!如何在ESP32上获得一个微妙级延时
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);
}
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);
}
-
muyisoldier
- Posts: 2
- Joined: Mon Oct 25, 2021 9:22 am
Re: 求助!如何在ESP32上获得一个微妙级延时
您好,我也想知道怎么解决的,我用定时器最小只能获取4us的脉冲,再小esp32就不断重启两个函数都试过啦 ,都不是很准,自己用定时器搞定啦。谢谢两位
Who is online
Users browsing this forum: No registered users and 1 guest
