Цитата(vlad_new @ Aug 28 2013, 06:34)

Тогда так: NVIC_PriorityGroup_0 - вытисняющих приоритетов нет. NVIC_PriorityGroup_4 - вроде то же не безопасно применять. В 3 ядре с этим были проблеммы.
Ну не удается урвать 15 уровней, ну и фиг с ним.
Значит, если я правильно понял, остается NVIC_PriorityGroup_3 (8 вытисняющих приоритета в 2 группах).
Тогда в NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority я должен указывать приоритет от 0 до 7, а в NVIC_InitStructure.NVIC_IRQChannelSubPriority указывать всегда 0 или 1.
Так будут работать 8 вытисняющих уровней?
Да, интересно где бы найти окончательную ясность.
В документации от ARM на Cortex-M4 четко сказано, что если регистр NVIC->IPR как-то изменяется у производителей, то только занулением младших бит.
А поскольку установка группы начинается от младших бит, то первые четыре установки группировки в регистре SCB->AIRCR (NVIC_PriorityGroup_0..NVIC_PriorityGroup_3) не производят никакого эффекта.
Субприоритеты в этом случае установить невозможно, а уровней вытесняющих приоритетов по прежнему будет 16.
Но сейчас вижу, что в BSP от уважаемой фирмы Freescale все равно считают, что под вытесняющие приоритеты есть только 3-и бита. Так словно младшие биты смещаются влево в регистре NVIC->IPR на 4-е позиции.
Или программисты в солидных фирмах не просекли разницу в программировании поля PRIGROUP регистра SCB->AIRCR между Cortex-M3 и Cortex-M4 ?