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

Вложенные прерывания, stm32l151

Есть прерывание от таймера T7, в любой момент его должно прервать прерывание от rx USART. Настраиваю приоритеты у T7 ставлю низкий например 5, в отладчике это вижу. Настраиваю USART ставлю 0, наивысший приоритет, тоже в отладчике это вижу. Оба прерывания срабатывают, но по логике очевидно что USART не пребивает T7. Довел до абсурда внутри T7 сделал зависон while(1) вижу что контроллер там висит в отладке. Начинаю слать какую нибудь байду по уарту, контроллер в прерывание не заходит. Не понимаю почему так. Ведь по логике вещей достаточно засунуть приоритеты в разные группы так и сделано NVIC_SetPriority(USART2_IRQn, 0), NVIC_SetPriority(TIM7_IRQn, 5);. Почему не работает вложенное прерывание?

Изменено пользователем haker_fox
Уточнил название темы, добавил теги, переместил в нужный раздел.

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


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

Хотя-бы укажите какое у Вас ядро, а ещё лучше - МК. А то ARM - понятие растяжимое и контроллеры прерываний разные :biggrin:

Если у Вас Cortex-M, то всё должно работать. Очевидно где то у Вас в коде ошибка, только Вы и можете её найти.

И для тестов приоритетов в Cortex-M "зависоны" делать нет надобности. В NVIC есть соответствующий регистр, позволяющий программно возбуждать прерывания - он Вам будет полезен.

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


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

В тему топика: Вложенные прерывания :beer:

NVIC отдыхает. тяпница-развратница B)

 

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


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

NVIC отдыхает. тяпница-развратница B)

Стоит ставить тэг [NSFW] для таких картинок. :cranky:

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


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

Так и не понял причину, где копать - группы разные, прерывания разрешены, где еще можно накосячить по коду?

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


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

Так и не понял причину, где копать - группы разные, прерывания разрешены, где еще можно накосячить по коду?

Приоритеты или группы? Это разные вещи.

NVIC_SetPriority задаёт приоритет. Так и пишите - приоритет. При такой путанице непонятно что же показывает отладчик.

Изменено пользователем GetSmart

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


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

Разобрался, как то слишком уж запутанно. Проблема была в том что NVIC_PriorityGroup влияет на preemption priority и subpriority, как то везде об этом невнятно пишут. Без поллитры не обойтись

Изменено пользователем Darti

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


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

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

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

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

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

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

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

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

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

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