Здравствуйте.
использую низкоуровневую библиотеку драйверов от производителя (cortex m3 от spansion ) совместно с freertos.
в функции main после вызова xQueueCreate (перестаёт обрабатываться прерывание от Uart (уровень прерывания 15 на момент инициализации)
уровни в FreeRTOSConfig
configLIBRARY_LOWEST_INTERRUPT_PRIORITY 0xf
configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY 5
configMAX_SYSCALL_INTERRUPT_PRIORITY 0x50
configKERNEL_INTERRUPT_PRIORITY 0xf0
в отладчике вижу что после вызова xQueueCreate регистр BASEPRI получает значение configMAX_SYSCALL_INTERRUPT_PRIORITY =0x50
(для freertos это похоже на вход в критическую секцию), и прерывания от uart выше 4 перестали обрабатываться
предполагаю что младшие четыре байта для регистра приоритета не важны а в старших записано 5 и все что выше или равно 5
запрещается регистром приоритета BASEPRI.
Вопрос зачем при создании очереди блокировать прерывания?
p.s. кажется ответ нашелся. блокировка нужна для многозадачной среде(что бы свойства очереди не менять) и критическая секция соответственно.