Как гарантировать жесткую остановку программного таймера в реальном времени (xTimerStop) - PullRequest
0 голосов
/ 14 января 2019

Иногда мне нужно немедленно остановить программный таймер в FreeRTOS и соответствующую функцию обратного вызова, но я обнаружил, что иногда для остановки таймера требуется 2 рабочих цикла.

if (pdPASS != xTimerStop(my_timer, OSTIMER_WAIT_FOR_QUEUE))
{
//error
}

В качестве исправления я добавил глобальный флаг, чтобы установить его, когда мне нужно остановить этот таймер, а затем проверить значение флага в функции обратного вызова таймера. Я знаю, что это проблема, потому что FreeRTOS отправляет команду остановки в очередь ядра, и у нее есть некоторая задержка (в зависимости от состояния системы), пока таймер действительно не получит команду и остановится, но есть ли лучший способ, чем добавить флаг в код?

Спасибо

...