Цитата(1kvi1 @ Nov 4 2011, 14:32)

Можно более подробно - про уровни приоритетов прерываний? Как правильно инициализировать?
Сделал как в примерах, но ничего не помогает...
Который день мучаюсь с прерываниями первого последовательного порта в STM32L.
значится так - для кортекса м3 -
у котрекса наименьшему число соответствует больший приоритет. Приоритеты прерываний проца ось не использует. Поэтому
если надо,чтобы прерывания использовали средства оси, то NVIC_IRQChannelPreemptionPriority должно быть больше max syscal prio оси сдвинутого на 4, ибо используются только старшие 4 бита значения. эти прерывания будут запрещаться осью.
сли не надо - то меньше. эти прерывания не будут запрещаться осью, но и средства оси они использовать не могут, иначе ось виснет (я об это спотыкался).
также надо чтобы была строчка NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4), чтобы не сильно менять определения приоритетов порта.
Например у меня определено max syscal prio как 0xb0. Таймерные прерывания не используют средств оси, а лишь запускают SPI, поэтому у него NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x0a. А SPI по окончании передачи шлет сообщение из прерывания, что данные приняты. Поэтому у него приоритет == 13
Приоритеты задач в самой оси никак не пересекаются с приоритетами прерываний и там чем число больше, тем приоритет выше.