Полная версия этой страницы:
Вложенные прерывания
Есть прерывание от таймера T7, в любой момент его должно прервать прерывание от rx USART. Настраиваю приоритеты у T7 ставлю низкий например 5, в отладчике это вижу. Настраиваю USART ставлю 0, наивысший приоритет, тоже в отладчике это вижу. Оба прерывания срабатывают, но по логике очевидно что USART не пребивает T7. Довел до абсурда внутри T7 сделал зависон while(1) вижу что контроллер там висит в отладке. Начинаю слать какую нибудь байду по уарту, контроллер в прерывание не заходит. Не понимаю почему так. Ведь по логике вещей достаточно засунуть приоритеты в разные группы так и сделано NVIC_SetPriority(USART2_IRQn, 0), NVIC_SetPriority(TIM7_IRQn, 5);. Почему не работает вложенное прерывание?
Хотя-бы укажите какое у Вас ядро, а ещё лучше - МК. А то ARM - понятие растяжимое и контроллеры прерываний разные
Если у Вас Cortex-M, то всё должно работать. Очевидно где то у Вас в коде ошибка, только Вы и можете её найти.
И для тестов приоритетов в Cortex-M "зависоны" делать нет надобности. В NVIC есть соответствующий регистр, позволяющий программно возбуждать прерывания - он Вам будет полезен.
GetSmart
Jul 8 2016, 11:51
__NVIC_PRIO_BITS точно правильный?
Процессор надо бы указывать.
В тему топика:
Вложенные прерывания 
NVIC отдыхает. тяпница-развратница
Цитата(jcxz @ Jul 8 2016, 15:28)

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

Стоит ставить тэг [NSFW] для таких картинок.
Так и не понял причину, где копать - группы разные, прерывания разрешены, где еще можно накосячить по коду?
GetSmart
Jul 8 2016, 13:56
Цитата(Darti @ Jul 8 2016, 17:40)

Так и не понял причину, где копать - группы разные, прерывания разрешены, где еще можно накосячить по коду?
Приоритеты или группы? Это разные вещи.
NVIC_SetPriority задаёт приоритет. Так и пишите - приоритет. При такой путанице непонятно что же показывает отладчик.
Разобрался, как то слишком уж запутанно. Проблема была в том что NVIC_PriorityGroup влияет на preemption priority и subpriority, как то везде об этом невнятно пишут. Без поллитры не обойтись
Можно просто отключить группы. Нафиг они нужны?
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.