Максимальное количество прерываний таймера - PullRequest
0 голосов
/ 25 августа 2018

по этой ссылке

https://os.mbed.com/handbook/Ticker

он говорит: «Обратите внимание, что таймеры основаны на 32-битных микросекундных счетчиках int, поэтому могут работать только максимум до 2 ^ 31-1 микросекунд, т.е. 30 минут. Они рассчитаны на промежуток времени между микросекундами и секундами. чем дольше, вы должны учитывать время () / часы реального времени. "

Мой вопрос заключается в том, что этот 30-минутный лимит предназначен только для случаев использования интервала в 1 мкс? как то так

flipper.attach_us (& flip, 1);

Если мне нужно вызывать прерывание каждые 1 мс, значит ли это, что счетчик теперь может работать до 30000 минут? как то так

flipper.attach_us (& flip, 1000);

Кроме того, что произойдет с таймером после того, как он будет заполнен, он самостоятельно очищается и перезапускается или выдает ошибку.

Ответы [ 2 ]

0 голосов
/ 28 августа 2018

Страница, на которую вы ссылаетесь, старая. Таймеры больше не 32-битные, но теперь 64-битные; так что это больше не проблема. См. Последнюю версию Ticker документов в https://os.mbed.com/docs/latest/reference/ticker.html.

0 голосов
/ 26 августа 2018

Это объявление функции:

void attach_us (Callback< void()> func, us_timestamp_t t)

«т» - это время между вызовами. Предупреждение, которое вы нашли на связанной странице (https://os.mbed.com/handbook/Ticker), говорит, что максимальный интервал времени, который вы можете установить, составляет около 30 минут, потому что «t» - это 32-битное целое число. (Я думаю, что это 64-битная версия в последнем API. https://os.mbed.com/docs/latest/reference/ticker.html).

Когда таймер достигает значения, указанного в «t», он переполняется и запускает функцию обратного вызова. Это повторяется до тех пор, пока вы не отсоедините его.

Если ваш интервал составляет 1 мс, вам не нужно беспокоиться о максимальном ограничении в 30 минут.

...