Ответа на этот вопрос здесь
Libopencm3 interrupt table on STM32F4
объясняет весь механизм хорошо, но то, что я получаю все вектор таблиц заполнены с блокирующими обработчиками.LibOpenCM3 таблица векторов всех блокировки обработчик
Я знаю это потому, что вижу это в отладчике (кроме всего этого не работает): disassembly screenshot showing vector table.
Это как если бы компоновщик просто игнорирует мою хорошо определенную функцию обработчика прерываний (ы), например:
void sys_tick_handler(void)
{
...
}
void tim1_up_isr(void)
{
...
}
Я использую EmBitz IDE и следовал этому учебнику here получить libopencm3 работать (и это делает работа, кроме этой проблемы).
Я проверил имена функций n-fold и попробовал несколько онлайн-примеров, в том числе из проекта примеров libopencm3.
Все скомпилировано без сбоев и загружается в целевую плату (STM32F103C8) и работает нормально - за исключением того, что ISR не вызываются (я получаю прерывания, но они застревают в блокирующих обработчиках).
У кого-нибудь есть идея, почему это происходит?
Правильно ли, что у вас такая же проблема при создании и запуске проектов из примеров libopencm3? Если да, то как вы их строите? Просто запустив 'make' в соответствующем каталоге проекта? И какую ОС вы используете? –
@Sam, я использую EmBitz IDE, как указано в вопросе. Я запускаю его на Win 7 VM, но не вижу, как это может быть связано. Это может быть проблема EmBitz? – spacer