Мне нужно иметь дело со счетчиком, который дает мне галочки для моего приложения. Счетчик 32 бита, так что мне нужно знать, как бороться с ним, когда он заканчивается. например:
У меня есть функция, которая возвращает (timestamp + shifttime), и у меня есть другая функция, которая будет возвращать 1 или 0 в зависимости от того, истекло ли время, но может быть вероятность того, что мой счетчик обернется, как мне поступить с этим ?.
Спасибо
Большое спасибо за все ответы, ребята. Я дам более подробно в этом редактировании.
Я использую STM32 Cortex-M3. Я хочу использовать счетчик RTC, чтобы использовать его в качестве отметки для моего приложения для планирования задач, которые должны выполняться через определенные промежутки времени. RTC может генерировать прерывание переполнения, поэтому его не проблема обнаружить. основная проблема, с которой я сталкиваюсь (или, по крайней мере, считаю ее проблемой), заключается в том, что определенные задачи получают (метка времени + смещение), т. е.
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
}
}
}
давайте предположим, что мой счетчик RTC имеет длину всего 8 бит, чтобы упростить математику.
если мой текущий счетчик равен 250, когда я получаю свои метки времени, это означает, что FlashLedTimeStamp = 14 и StatusLedTimeStamp = 253, как мне проверить, что FlashLedTimeStamp истек ?? 1014 *
имейте в виду, что я не обязательно проверяю все время, чтобы увидеть, что является текущим счетчиком и истек ли определенный временной штамп. Надеюсь, это прояснит, в чем заключается проблема, с которой я сталкиваюсь.