Как обрабатывать ввод с нескольких кнопок, используя одно прерывание?
Интересно, как сделать обработчик IRQ, который может по-разному реагировать на нажатие каждой кнопки.
Я думаю сделать это следующим образом:
void EXTI9_5_IRQHandler(){
if (EXTI_GetITStatus(EXTI_Line_5)){
doThis();
} else if (EXTI_GetITStatus(EXTI_Line_6)) {
doThat();
}
}
Я не знаю, как подключить несколько кнопок к одному прерыванию, и это моя худшая проблема:(
1 ответ
Решение
Это принцип. Я не слишком знаком с периферийными устройствами STD, но мне интересно, если EXTI_GetFlagStatus
было бы лучше в вашем случае. Также не забудьте очистить флаг прерывания.
Ваш код должен выглядеть так:
void EXTI9_5_IRQHandler(){
if (EXTI_GetITStatus(EXTI_Line_5)){
EXTI_ClearFlag(EXTI_Line_5);
doThis();
} else if (EXTI_GetITStatus(EXTI_Line_6)) {
EXTI_ClearFlag(EXTI_Line_6);
doThat();
}
}