#include "esp_timer.h"
In your app’s main loop()
//----- DO HEARTBEAT TIMER -----
HeartbeatTimer();
The Heartbeat Function
//*******************************
//*******************************
//********** HEARTBEAT **********
//*******************************
//*******************************
void HeartbeatTimer (void)
{
static int64_t HeartbeatLast1msTime = 0;
static int Heartbeat10msTimer = 0;
static int Heartbeat100msTimer = 0;
static int Heartbeat1SecTimer = 0;
while ((esp_timer_get_time() - HeartbeatLast1msTime) >= 1000) //esp_timer_get_time() provides uS since startup. int64 x 1uS = 292,471 years before rollover
{
HeartbeatLast1msTime += 1000;
//-----------------------------
//-----------------------------
//----- HERE EVERY 1 mSec -----
//-----------------------------
//-----------------------------
//>>>>>>>>>
/*
//Toggle a pin so we can verify the timer is working using an oscilloscope
static int IoState = 0;
IoState ^= 1; //Toggle the pins state
gpio_set_direction(GPIO_NUM_12, GPIO_MODE_OUTPUT);
gpio_set_level(GPIO_NUM_12, IoState);
*/
//<<<<<<<<<<<
Heartbeat10msTimer++;
if (Heartbeat10msTimer >= 10)
{
//----------------------------
//----------------------------
//----- HERE EVERY 10 mS -----
//----------------------------
//----------------------------
Heartbeat10msTimer = 0;
} //if (Heartbeat10msTimer == 10)
Heartbeat100msTimer++;
if (Heartbeat100msTimer >= 100)
{
//-----------------------------
//-----------------------------
//----- HERE EVERY 100 mS -----
//-----------------------------
//-----------------------------
Heartbeat100msTimer = 0;
} //if (Heartbeat100msTimer == 100)
Heartbeat1SecTimer++;
if (Heartbeat1SecTimer == 1000)
{
//----------------------------
//----------------------------
//----- HERE EVERY 1 Sec -----
//----------------------------
//----------------------------
Heartbeat1SecTimer = 0;
} //if (Heartbeat1SecTimer == 1000)
} //while ((esp_timer_get_time() - HeartbeatLast1msTime) >= 1000)
}
