-
- Повторяю вопрос. Как отделить разные флаги одного вектора при
ПОСЛЕДОВАТЕЛЬНОМ размещении "стандартного" и пользовательского
кода? На самом деле, этот самый "стандартный" обработчик - это
ПРОСТО СБРОС ФЛАГА. И ставить его рекомендуют в конце ISR. Таким
образом, этот "стандартный" никак не исключает проверку флага
силами пользователя... - my504(28.08.2020 10:47)
- чаще всего я свой обработчик ставлю после кубовского. Т.е. он
реально мне нужен только для сброса флага. Но один раз пришлось
ставить ДО чтобы знать - прерывание от UART было по приему или
передаче. - Лaгyнoв(28.08.2020 12:19)
- И как кубовский обработчик помогает в определении источника
прерываний по общему вектору? У меня ощущение, что вся эта история
со "стандартным" обработчиком - это мазохизм в извращенной форме. - my504(28.08.2020 12:45)
- Так он же там не один, а для каждого типа периферии свой. Например: Kceния(874 знак., 28.08.2020 13:34)
- Ксения, речь идет об ОДНОМ векторе. Например, TIM6_DAC. Обработчик одного вектора может быть ТОЛЬКО ОДИН. То есть прерывания по НЕСКОЛЬКИМ флагам (иногда одной, а иногда и разной периферии) вызывают переход ПО ОДНОМУ АДРЕСУ. Пользователь должен сортировать флаги САМ. То есть написать цепочку условий проверки ОТДЕЛЬНЫХ флагов с ОТДЕЛЬНЫМИ обработчиками по каждому из них. Вот и объясните мне каким образом "стандартный" обработчик по факту являющийся лишь сбросом флага (а может my504(63 знак., 28.08.2020 13:56)
- ))) и на какой флаг реагирует HAL_UART_IRQHandler(&huart1); ??? - Aleksey_75(28.08.2020 13:38)
- я не имел в виду, что кубовский обработчик помогает. Я имел в виду,
что мой обработчик (который и определяет источник) пришлось ставить
впереди кубовского, потому что он сбрасывает запрос. Я вроде уже
тут говорил, но повторюсь. Для меня лично вся эта затея с проектом
от Куба нужна исключительно как "рыба". Ввиду моей неграмотности в
Кейле вообще и в Си в частности мне было проще вписывать свои
строки во что-то готовое. Только и всего. :-) - Лaгyнoв(28.08.2020 13:20)
- Доступ к регистрам осуществляется через указатель на структуру. То есть достаточно узнать из референс-мануала регистр флагов прерываний по данной периферии и обычным if проверить бит с искомым флагом. Так же прочесть в референс-мануале как сбросить этот флаг (не всегда это запись нуля в этот бит). Иначе можно огрести разные чудесатости... - my504(28.08.2020 14:07)
- +1!! флаги разбирать все равно ручками, да и сбрасывать тоже, ибо не все флаги стираются записью 0, по многоим нужны танцы с бубнами!!! - Aleksey_75(28.08.2020 13:07)
- Так он же там не один, а для каждого типа периферии свой. Например: Kceния(874 знак., 28.08.2020 13:34)
- И как кубовский обработчик помогает в определении источника
прерываний по общему вектору? У меня ощущение, что вся эта история
со "стандартным" обработчиком - это мазохизм в извращенной форме. - my504(28.08.2020 12:45)
- чаще всего я свой обработчик ставлю после кубовского. Т.е. он
реально мне нужен только для сброса флага. Но один раз пришлось
ставить ДО чтобы знать - прерывание от UART было по приему или
передаче. - Лaгyнoв(28.08.2020 12:19)
- Повторяю вопрос. Как отделить разные флаги одного вектора при
ПОСЛЕДОВАТЕЛЬНОМ размещении "стандартного" и пользовательского
кода? На самом деле, этот самый "стандартный" обработчик - это
ПРОСТО СБРОС ФЛАГА. И ставить его рекомендуют в конце ISR. Таким
образом, этот "стандартный" никак не исключает проверку флага
силами пользователя... - my504(28.08.2020 10:47)