пытаюсь понять логику прерываний оси. пока что не совсем понимаю что и как...
Итак, задача -
1. прерывания sysTick должны иметь наивысший приоритет и должно прерывать любой обработчик прерывания, ибо в нем, помимо функций оси, будет запускаться только таймер.
2. Прерывание таймера, скажем TIM2 должно иметь высокий приоритет, прерывать любой обработчик прерывания (оно абсолютно точно не будет пересекаться с прерыванием sysTick) и не блокироваться осью, ибо будет только запускать передачу по SPI и не будет использовать функций оси.
2.а Есть еще прерывания, которые не будут использовать функции оси.
3. Прерывание, скажем DMA конец передачи должно иметь тоже высокий приоритет, но будет использовать функции оси (запись в очередь)
4. Все остальные прерывания должны иметь меньший приоритет, будут использовать функции оси, могут запрещаться осью.
5. Всего 5-10 пользовательских задач и 10-15 очередей в системе - 2 задачи высокоприоритетные, одна низкоприоритетная, остальные имеют одинаковый "средний приоритет."
Вот что есть в примере:
Код
#define configLIBRARY_LOWEST_INTERRUPT_PRIORITY 15
#define configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY 5
/* The lowest priority. */
#define configKERNEL_INTERRUPT_PRIORITY ( configLIBRARY_LOWEST_INTERRUPT_PRIORITY << (8 - configPRIO_BITS) )
/* Priority 5, or 95 as only the top four bits are implemented. */
#define configMAX_SYSCALL_INTERRUPT_PRIORITY ( configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY << (8 - configPRIO_BITS) )
#define configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY 5
/* The lowest priority. */
#define configKERNEL_INTERRUPT_PRIORITY ( configLIBRARY_LOWEST_INTERRUPT_PRIORITY << (8 - configPRIO_BITS) )
/* Priority 5, or 95 as only the top four bits are implemented. */
#define configMAX_SYSCALL_INTERRUPT_PRIORITY ( configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY << (8 - configPRIO_BITS) )
Вопрос(ы)
1. Кто может объяснить мне как LOWEST_INTERRUPT_PRIORITY и SYSCALL_INTERRUPT_PRIORITY согласуются с приоритетом прерываний "железных"?
2. Как назначить приоритеты прерываниям?
3. где можно прочитать (кроме как API доков на сайте) подробно как это делать?
Заранее благодарю