Мне нужно иметь дело со счетчиком, который дает мне тики для моего приложения. Счетчик 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 истек??
имейте в виду, что я не обязательно все время проверяю, что такое текущий счетчик и истек ли срок действия определенной метки времени. Я надеюсь, что это проясняет, в чем проблема, которая у меня есть, благодаря всем продвинутым.