ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Воскресенье
24 ноября
1031631
Kceния (27.08.2020 20:16, просмотров: 23181) fk0
А чего вообще надо делать, если находишься в прерывании по окончании задания, и требуется еще раз это же задание запустить? 

Скажем, SPI на AVR можно легко перезапустить прямо из прерывания, т.к. эта операция не время затратная. Но уже на ARM под CubeMX перезапуск задания вывода строки байт на SPI через DMA приводит к зависанию. Причем, происходит это не в любом обработчике прерывания, а только в родном.

Типичное решение таких проблем: в прерывании устанавливаем флаг, а в главном цикле его проверяем и там же перезапускаем задание или делаем что-то такое, что длится непозволительно долго, чтобы быть выполнным в прерывании. Однако этот способ плох тем, что между заданиями будет временной интервал неопределенной длины, т.к. в главном цикле, помимо этого, может выполняться много другой работы, требующей времени.