TOG 0 21 августа, 2023 Опубликовано 21 августа, 2023 · Жалоба Товарищи, Микроконтроллер STM32F103. Отладчик J-Link V9 Программно активирую внешнее прерывание EXTI0. Далее мне нужно, чтобы МК сделал 1 шаг в программе, сработало прерывание EXTI0 и МК остановился в самом начале функции прерывания. Однако, если выполнять программу пошагово (Step), то прерывание никогда не сработает. Если отпустить программу (Run), то прерывание конечно сработает, но процессор не остановится и будет выполнять код из функции обработчика прерывания. А мне нужно, чтобы на первом адресе прерывания он остановился. Что посоветуете ? Сначала игрался с J-Link Commander. Потом написал свою программульку с подключением к JLINKARM.DLL, но так желаемого результата и не достиг. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Arlleex 178 21 августа, 2023 Опубликовано 21 августа, 2023 · Жалоба Пошагово никогда и не сработает. В чем проблема поставить точку останова в начале обработчика? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
pyroman 2 21 августа, 2023 Опубликовано 21 августа, 2023 · Жалоба BKPT 0 ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
TOG 0 21 августа, 2023 Опубликовано 21 августа, 2023 · Жалоба On 8/21/2023 at 4:46 PM, Arlleex said: Пошагово никогда и не сработает. В чем проблема поставить точку останова в начале обработчика? А почему при пошаговом выполнении не сработает прерывание ? Точку останова в начале обработчика нельзя поставить по условию задачи 😉 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Arlleex 178 21 августа, 2023 Опубликовано 21 августа, 2023 · Жалоба 11 минут назад, TOG сказал: А почему при пошаговом выполнении не сработает прерывание ? Так работает система отладки. Бывают, конечно, казусы, когда прерывания не отключаются, но это, скорее, отклонение от нормы. Лечат только "замораживанием" периферии в специальных регистрах Цитата Точку останова в начале обработчика нельзя поставить по условию задачи 😉 Пока что из условия задачи совсем не очевидно, что мешает поставить точку останова, возбудить прерывание и нажать "run" Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Raven 11 21 августа, 2023 Опубликовано 21 августа, 2023 · Жалоба 41 minutes ago, TOG said: А почему при пошаговом выполнении не сработает прерывание ? Точку останова в начале обработчика нельзя поставить по условию задачи 😉 А что - в ARM Cortex-M1 разве нет опции разрешить прерывания на время шага при отладке? В RISC-V такая есть, наверняка и в ARM'ах имеется. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Arlleex 178 21 августа, 2023 Опубликовано 21 августа, 2023 · Жалоба 5 минут назад, Raven сказал: А что - в ARM Cortex-M1... Cortex-M3. Но да ладно. Разрешением прерываний в режиме отладки заведует отладчик, битом в специальном отладочном регистре. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Raven 11 21 августа, 2023 Опубликовано 21 августа, 2023 · Жалоба 7 minutes ago, Arlleex said: Разрешением прерываний в режиме отладки заведует отладчик, битом в специальном отладочном регистре. Да, Cortex-M3 (не армовод я, прошу извинить). Управление этим битом не поднято куда-нибудь наверх, в видимые пользователю опции отладки? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Obam 37 21 августа, 2023 Опубликовано 21 августа, 2023 · Жалоба Какой средой отладки пльзуется, ТС не указал, а в IAR есть Step (F10) и StepInto (F11). Так вот, первая кнопка всегда даёт остановку в прерывании, а вторая - нет. Ну и реакция на прерывания при пожаговом исполнении тоже настраивается тонко. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться