ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Понедельник
1 июля
205326 Топик полностью
Шаманъ (07.08.2010 19:34, просмотров: 284) ответил Т.Достоевский на Кейл жет-линк
Надо бы вначале задать сколько из 16 уровней будет вложенных, а сколько не вложенных (в пределах группы). Задается это дело через поле PRIGROUP регистра AIRCR который находится в SCB (System Control Block). Вот что получаеццо: 
PRIGROUP      группы (с вытеснением)      подгруппы
   0x3                 16                  0
   0x4                  8                  2
   0x5                  4                  4
   0x6                  2                  8
   0x7                  0                 16
После сброса значение PRIGROUP=0 что соответствует варианту когда подгрупп нет - прерывание с бОльшим приоритетом вытеснит с меньшим... Я библиотекой не пользуюсь - какая-то мутная она. Есть макросы и инлайн функции которыми все делается очень просто и понятно, например: //Задаем группирование приоритетов - 8 групп в каждой два уровня приоритета NVIC_SetPriorityGrouping(0x04); //Установка приоритета (самый низкий) NVIC_SetPriority(PendSV_IRQn, 15); //Установка приоритета SVC - выше PendSV, но без вытеснения NVIC_SetPriority(SVCall_IRQn, 14); //Установка приоритета прерывания которое вытеснит любое из тех что выше NVIC_SetPriority(xxxxxx_IRQn, 13);