Отказ от ответственности: Если говорить о PIC32 и опыте dsPIC, то здесь, в сочетании с тем, что я прочитал из таблицы данных PIC18F4580 и ошибок ( Ссылки PIC18F4580 ).
Согласно PIC18F4580секция прерываний таблицы данных:
Не используйте инструкцию MOVFF для изменения любого из регистров управления прерываниями, пока любое прерывание разрешено.Это может привести к ошибочному поведению микроконтроллера.
Таким образом, чтобы получить это неизвестное поведение, вам нужно изменить регистр INTCONx.Поскольку вы указали, что хотите включить разрешение прерывания для модуля USART внутри обработчика, вам не нужно беспокоиться об этом предупреждении, поскольку вы будете менять PIE, а не INTCONx.Обратите внимание, что регистр PIE поддерживает определенные периферийные прерывания.Существует также общее разрешение прерываний (GIE), которое маскирует ALL маскируемые прерывания в одном кадре.Вы не хотите возиться с этим внутри прерывания, так как он должен обрабатываться для вас автоматически процедурой входа / выхода обработчика (также в регистре INTCON).
Так, как сказал mjv, маскировкаПериферийное прерывание USART в его обработчике вполне разумно.