ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Суббота
23 ноября
621231 Топик полностью
vpv.vpv (25.09.2015 13:38, просмотров: 243) ответил Apтём на А нужно ли вызывать функции внутри обработчика прерывания, да и ещё к тому же по указателю? И что будет если вызванная функция захочет использовать несохранённые регистры? Программа вылетит?
С указателями мне было проще реализовать задуманное. Функции - это короткие и простые действия, и указатели на них я меняю, в зависимости от поведения и состояния системы. Например, прерывание по переполнению таймера, что должно делать? Если вот тут, то начать новый цикл, а вот тут сгенерить ошибку, а вот здесь повторно передать байт а вот тут... и т.д. Лепить кучу флажков-семафоров не хотелось. Потому - указатели. Я ожидаю байт, может прийти прерывание по приёму, а может по таймеру. Который указывает на генерацию ошибки. Но если я обращаюсь к устройству, которого может не быть - оно может ответить, а может и нет. Тогда я предварительно меняю указатель в таймере на начало цикла. Если байт не приходит, то то же самое прерывание таймера теперь уже вместо генерации ошибки инициирует новый цикл. Просто, удобно, а главное - очень быстро. ))