Sidoroff 0 9 апреля, 2013 Опубликовано 9 апреля, 2013 · Жалоба Начал осваивать Keil при помощи STM32F4-Discovery. Версия Keil uVision 4.54. Запустил штатный пример - мигалку светодиодами, все работает. В меню Options for Target 'STM32F04' Flash \ C/C++ \ в поле Misc Controls дописываю '--cpp' (хочу работать только на C++) мигать перестает. Размер кода и .map-файл для режима С и C++ совпадают полностью, Посмотрел *.hex, оказалось отличается только вектор прерывания SysTick, поэтому, разумеется, и не мигает. Что я делаю не так? Как правильно включить в Keil режим C++? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
lotor 0 9 апреля, 2013 Опубликовано 9 апреля, 2013 · Жалоба Гуглите по этому форуму ключевую фразу: extern "C" Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Sidoroff 0 9 апреля, 2013 Опубликовано 9 апреля, 2013 · Жалоба Как связано extern "C" и неработающие прерывания? Можно поточнее подсказки? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Tahoe 0 9 апреля, 2013 Опубликовано 9 апреля, 2013 · Жалоба Можно поточнее подсказки? Да куда уж точнее? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
demiurg_spb 0 9 апреля, 2013 Опубликовано 9 апреля, 2013 · Жалоба Эту тему стоит закрепить в хедере раздела ARM. Ну или составить FAQ по типичным граблям начинающего плюсатого, а можно и не плюсатого армовода. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SChe 0 9 апреля, 2013 Опубликовано 9 апреля, 2013 (изменено) · Жалоба extern "C" { void EXTI1_IRQHandler(void) { EXTI_Handler_1(); EXTI->PR |= EXTI_PR_PR1; } } код для STM32L1xx, для STM32F4 должно быть аналогично Изменено 9 апреля, 2013 пользователем IgorKossak [codebox] для длинного кода, [code] - для короткого!!! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
demiurg_spb 0 9 апреля, 2013 Опубликовано 9 апреля, 2013 · Жалоба Позволю себе внести 3 правки в ваш вариант. extern "C" void EXTI1_IRQHandler(void) { EXTI->PR = EXTI_PR_PR1; EXTI_Handler_1(); } Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться