Я запутался в некоторых особенностях порта FreeRTOS под Cortex-M3. А именно: в файле freertosconfig.h есть следующие мароопределения:
Код
/* This is the raw value as per the Cortex-M3 NVIC. Values can be 255 (lowest) to 0 (1?) (highest). */
#define configKERNEL_INTERRUPT_PRIORITY 255
#define configMAX_SYSCALL_INTERRUPT_PRIORITY 191 /* equivalent to 0xb0, or priority 11. */
/* This is the value being used as per the ST library which permits 16 priority values, 0 to 15. This must correspond to the configKERNEL_INTERRUPT_PRIORITY setting. Here 15 corresponds to the lowest NVIC value of 255. */
#define configKERNEL_INTERRUPT_PRIORITY 255
#define configMAX_SYSCALL_INTERRUPT_PRIORITY 191 /* equivalent to 0xb0, or priority 11. */
/* This is the value being used as per the ST library which permits 16 priority values, 0 to 15. This must correspond to the configKERNEL_INTERRUPT_PRIORITY setting. Here 15 corresponds to the lowest NVIC value of 255. */
Насколько я понимаю, configKERNEL_INTERRUPT_PRIORITY соответствует наименьшему приоритету NVIC - 15-му. А configMAX_SYSCALL_INTERRUPT_PRIORITY - 11-му.
Никак не могу разобраться как и где эти константы используются. Где именно происходит назначение приоритета этими константами.
И еще в доках сказано, что нельзя использовать ф-ции FreeRTOS в прерываниях с приоритетом большим чем configMAX_SYSCALL_INTERRUPT_PRIORITY (т.е. как я понял с приоритетами 0-10 в данном случае). Объясните, пожалуйста, почему?
Просьба сильно не пинаться, я недавно работаю с данной ОС.