Cómo lidiar con un contador de envoltura en C incrustado

Necesito lidiar con un contador que me da ticks para mi aplicación. El contador es de 32 bits, así que lo que necesito saber es cómo lidiar con él cuando se envuelve. por ejemplo:

Tengo una función que devuelve un (marca de tiempo + tiempo de cambio) y tengo otra función que devolverá 1 o 0 dependiendo de si ha transcurrido o no el tiempo, pero podría existir la posibilidad de que mi contador termine ¿Cómo puedo lidiar con esto? .

Gracias

Muchas gracias por todas las respuestas chicos. Daré más detalles en esta edición.

Estoy usando el STM32 Cortex-M3. Quiero usar el contador RTC para usarlo como la marca de verificación de mi aplicación para programar tareas que deben suceder a ciertos intervalos. El RTC puede generar una interrupción por desbordamiento, por lo que no es un problema detectar la interrupción. El principal problema que tengo (o al menos creo que es un problema) es cuando ciertas tareas obtienen un (marca de tiempo + cambio), es decir.


int main( void )
{
FlashLedTimeStamp = ReturnCounter( 20 );  // currentcounter value + a shift of 20
StatusLedTimeStamp = ReturnCounter( 3 );  // currentcounter value + a shift of 3

//then later on ....
while(1)
{
    /* other tasks could go here */

    if( HasTimeElapsed( FlashLedTimeStamp );
    {
       /* do something and get another timestamp value */
       FlashLedTimeStamp = ReturnCounter( 20 );  // currentcounter value + a shift of 20
    }

    if( HasTimeElapsed( StatusLedTimeStamp );
    {
       /* do something and get another timestamp value */
       FlashLedTimeStamp = StatusLedTimeStamp( 3 );  // currentcounter value + a shift of 3
    }
}   
}

supongamos que mi contador RTC tiene solo 8 bits de largo para facilitar las matemáticas.

si mi contador actual está en 250 cuando recibo mis marcas de tiempo, eso significa que FlashLedTimeStamp = 14 y StatusLedTimeStamp = 253 ¿cómo verificaría que FlashLedTimeStamp haya expirado?

tenga en cuenta que no necesariamente verifico todo el tiempo para ver cuál es el contador actual y si ciertas marcas de tiempo han expirado o no. Espero que esto deje en claro cuál es el problema que tengo gracias a todos en avanzado.

Respuestas a la pregunta(11)

Su respuesta a la pregunta