Цитата(GetSmart @ Apr 25 2012, 22:54)

Это могут быть не те приоритеты. Программно раздаваемые приоритеты насколько мне не изменяет память всего лишь пятибитовые.
В Cortex-M3 могут быть реализованы 3 - 8 бит (старших) приоритетов (в зависимости от производителя). В LPC17xx производителем реализованы 5 бит (старших).
Т.е. когда Вы задаёте приоритет "NVIC_SetPriority (SPI_IRQHandler, 3)", в регистр приоритета прерывания SPI записывается значение "3 << (8-5)", т.е. 0x18. (см. реализацию NVIC_SetPriority в файте core_cm3.h). А когда Вы пишите в регистр BASEPRI, нужно самому делать эти "3 << (8-5)".
Т.е. чтобы запретить прерывания приоритетом ниже или равным 3, нужно вызвать __set_BASEPRI(0x18).
Советую прочесть книжку "The definitive guide to the ARM CORTEX-M3 second editition", толклвая и понятным языком написана.