Перейти к содержанию
    

Не могу попасть в прерывание при пошаговой отладке STM32F103

Товарищи,

Микроконтроллер STM32F103. Отладчик J-Link V9

Программно активирую внешнее прерывание EXTI0.

Далее мне нужно, чтобы МК сделал 1 шаг в программе, сработало прерывание EXTI0 и МК остановился в самом начале функции прерывания.

Однако, если выполнять программу пошагово (Step), то прерывание никогда не сработает. Если отпустить программу (Run), то прерывание конечно сработает, но процессор не остановится и будет выполнять код из функции обработчика прерывания.

А мне нужно, чтобы на первом адресе прерывания он остановился.

Что посоветуете ?

 

Сначала игрался с J-Link Commander. Потом написал свою программульку с подключением к JLINKARM.DLL, но так желаемого результата и не достиг.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Пошагово никогда и не сработает. В чем проблема поставить точку останова в начале обработчика?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 8/21/2023 at 4:46 PM, Arlleex said:

Пошагово никогда и не сработает. В чем проблема поставить точку останова в начале обработчика?

А почему при пошаговом выполнении не сработает прерывание ? 

Точку останова в начале обработчика нельзя поставить по условию задачи 😉

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

11 минут назад, TOG сказал:

А почему при пошаговом выполнении не сработает прерывание ?

Так работает система отладки. Бывают, конечно, казусы, когда прерывания не отключаются, но это, скорее, отклонение от нормы. Лечат только "замораживанием" периферии в специальных регистрах:prankster2:
 

Цитата

Точку останова в начале обработчика нельзя поставить по условию задачи 😉

Пока что из условия задачи совсем не очевидно, что мешает поставить точку останова, возбудить прерывание и нажать "run":wink:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

41 minutes ago, TOG said:

А почему при пошаговом выполнении не сработает прерывание ? 

Точку останова в начале обработчика нельзя поставить по условию задачи 😉

А что - в ARM Cortex-M1 разве нет опции разрешить прерывания на время шага при отладке? В RISC-V такая есть, наверняка и в ARM'ах имеется.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

5 минут назад, Raven сказал:

А что - в ARM Cortex-M1...

Cortex-M3. Но да ладно.

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

7 minutes ago, Arlleex said:

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

Да, Cortex-M3 (не армовод я, прошу извинить). Управление этим битом не поднято куда-нибудь наверх, в видимые пользователю опции отладки?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Какой средой отладки пльзуется, ТС не указал, а в IAR есть Step (F10) и StepInto (F11). Так вот, первая кнопка всегда даёт остановку в прерывании, а вторая - нет. Ну и реакция на прерывания при пожаговом исполнении тоже настраивается тонко.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...