Я хочу реализовать что-то в процессоре ARM Cortex-M3 (с NVIC). У меня ограниченные знания о встроенных системах, но я знаю, что процедура ISR должна быть максимально простой.
Теперь у меня есть следующая проблема: у меня есть процедура прерывания, которая вызывается при получении сообщения CAN. В одном случае мне нужно вычислить какую-то трудоемкую задачу с CAN-сообщением, задача которой не может быть прервана другим CAN-сообщением, но во время этой операции могут обслуживаться другие прерывания. Моя идея заключается в следующем:
- Сообщение CAN получено, ISR запущен, выполните несколько простых действий (например, установка флагов)
- Отключите прерывания CAN в процедуре CAN ISR. Также сохраните сообщение CAN в глобальной переменной, чтобы его можно было получить в основном цикле.
- В основном цикле выполните трудоемкую задачу.
- После этой задачи снова включите обработку прерываний CAN.
Это хорошая (или не совсем плохая) идея или я должен сделать это по-другому?