Sidoroff
Apr 9 2013, 07:19
Начал осваивать Keil при помощи STM32F4-Discovery.
Версия Keil uVision 4.54.
Запустил штатный пример - мигалку светодиодами, все работает.
В меню Options for Target 'STM32F04' Flash \ C/C++ \
в поле Misc Controls дописываю '--cpp' (хочу работать только на C++)
мигать перестает. Размер кода и .map-файл для режима С и C++ совпадают полностью,
Посмотрел *.hex, оказалось отличается только вектор прерывания SysTick,
поэтому, разумеется, и не мигает.
Что я делаю не так?
Как правильно включить в Keil режим C++?
Гуглите по этому форуму ключевую фразу: extern "C"
Sidoroff
Apr 9 2013, 10:14
Как связано extern "C" и неработающие прерывания?
Можно поточнее подсказки?
Цитата(Sidoroff @ Apr 9 2013, 14:14)

Можно поточнее подсказки?
Да
куда уж точнее?
demiurg_spb
Apr 9 2013, 12:10
Эту тему стоит закрепить в хедере раздела ARM.
Ну или составить FAQ по типичным граблям начинающего плюсатого, а можно и не плюсатого армовода.
Код
extern "C" {
void EXTI1_IRQHandler(void) {
EXTI_Handler_1();
EXTI->PR |= EXTI_PR_PR1;
}
}
код для STM32L1xx, для STM32F4 должно быть аналогично
demiurg_spb
Apr 9 2013, 13:32
Цитата(SChe @ Apr 9 2013, 17:18)

Позволю себе внести 3 правки в ваш вариант.
Код
extern "C" void EXTI1_IRQHandler(void)
{
EXTI->PR = EXTI_PR_PR1;
EXTI_Handler_1();
}