求助!如何在ESP32上获得一个微妙级延时
Re: 求助!如何在ESP32上获得一个微妙级延时
- #include "sys/unistd.h"
- //....
- usleep(1000);
- //....
Re: 求助!如何在ESP32上获得一个微妙级延时
其实usleep()底层会调用ets_delay_us(),可以考虑直接用ets_delay_us()
- #include "esp32/rom/ets_sys.h"
- ...
- ets_delay_us(1000);
Re: 求助!如何在ESP32上获得一个微妙级延时
两个函数都试过啦 ,都不是很准,自己用定时器搞定啦。谢谢两位
Re: 求助!如何在ESP32上获得一个微妙级延时
用用这个如何,延时100us:
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);
}
-
- Posts: 2
- Joined: Mon Oct 25, 2021 9:22 am
Who is online
Users browsing this forum: Google [Bot] and 36 guests