Мне нужно отредактировать адрес возврата ISR. ISR должен вернуться к определенному адресу после обработки прерывания независимо от того, откуда он был. Это облегчает быстрый сброс системы. Эта функциональность не может быть реализована в обычной прошивке, поскольку время слишком жесткое, чтобы часто проверять флаг.Cortex-M3: Изменение адреса возврата прерывания
Я попытался отредактировать фрейм стека, который был сохранен ISR при записи исключения, который, кажется, работает в течение нескольких миллисекунд, затем он входит в состояние «О дерьмо, что-то плохое». В этом состоянии стек выглядит нормально, и нет никаких признаков того, что что-то пошло не так. Это происходит, даже если я вытащил стек и надавил на него точно такие же данные. Кроме того, использование хранилища с указателем стека вызывает этот сбой.
Информация об обработке исключений может быть найдена here, но я не могу найти достаточно информации, чтобы сообщить мне, что происходит не так.
Идеи? Мне просто нужно, чтобы прерывание возвращалось на тот же ярлык, независимо от того, где происходит прерывание, и без того, чтобы ядро становилось все суетливым.
Спасибо, Стюарт
Вы пишете ISR? –
Можете ли вы просто перейти к вектору сброса, а не возвращаться из ISR? Должна быть возможность написать функцию, которая возвращает большую часть состояния процессора к чему-то, напоминающему состояние при сбросе, а затем перескакивает. – RBerteig
Я написал ISR. Я не хочу полностью переустанавливать эту часть, так как существует достаточная сумма инициализации коммитов, которую нельзя переделать. Я могу перейти от прерывания к нужному коду, но тогда прерывание обрабатывается навсегда и больше никогда не будет запущено. – Vatsu1