ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Четверг
18 апреля
1077082 Топик полностью
evgeniy1294 (14.02.2021 14:07, просмотров: 337) ответил klen на я примерно также сделал как у GigaDevice исходниках, только я пока не понял как отдельные заводить, еще не до конца разобрался - потроха у riscv как у большого процессора. в Вашем варианте
Не, я об оптимизации сильно не задумывался. Чтобы включить отдельный обработчик для прерывания нужно как минимум установить соответствующий аттрибут как Vectored. 

https://github.com/evgeniy1294/mpp/blob/master/src/irq/gigadevice/gd32v_irq_v1.hpp


Также нужно не забыть установить адрес таблицы в MTVT, с этим вроде как у вас порядок.

/* Устанавливаем указатель на таблицу прерываний для цепочечной обработки прерываний */
mpp::core::MTVT::Write( reinterpret_cast(InterruptVectorTable.data()) );

Повторюсь, этот режим я не проверял, возможно требуется что-то ещё. Для ускорения работы, как вариант, можно не сохранять контекст, а использовать stackless(вроде они так называются) функции - контекст сохранять не нужно, если он не портится. У меня на гитхабе есть некоторый код под этот камень

https://github.com/evgeniy1294/mpp