В описании операционной системы RL-ARM от Keil углядел очень интересный механизм
В ОС предусмотрен системный вызов для установки флагов событий, предназначенный для вызова из обработчика прерывания:
void isr_evt_set(unsigned short event_flags, 0S_TID task);
Таким образом, типичный процесс, выполняющий обработку прерывания,
будет выглядеть следующим образом:
Код
void Task3(void) {
while(1)
{
os_evt_wait_or(0x0001, 0xFFFF); /* Ждем установки флага
события обработчиком */
......... // Обрабатываем прерывание
} // В следующем проходе цикла снова засыпаем
}
Обработчик прерывания в данном случае будет содержать минимальное
количество кода:
void FIQ_Handler (void) __fiq
{
isr_evt_set(0x0001,tsk3); /* Сообщаем процессу tsk3 о возникновении
прерывания */
EXTINT = 0x00000002; // Сбрасываем флаг прерывания
}
Можно ли быть уверенным в том, что управление будет сразу же передано обработчику, а не с наступлением системного тика?
Сообщение отредактировал IgorKossak - Mar 25 2015, 18:30
Причина редактирования: [codebox] для длинного кода, [code] - для короткого