реклама на сайте
подробности

 
 
> Keil и C++
Sidoroff
сообщение Apr 9 2013, 07:19
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 46
Регистрация: 3-07-06
Пользователь №: 18 536



Начал осваивать Keil при помощи STM32F4-Discovery.
Версия Keil uVision 4.54.
Запустил штатный пример - мигалку светодиодами, все работает.
В меню Options for Target 'STM32F04' Flash \ C/C++ \
в поле Misc Controls дописываю '--cpp' (хочу работать только на C++)
мигать перестает. Размер кода и .map-файл для режима С и C++ совпадают полностью,
Посмотрел *.hex, оказалось отличается только вектор прерывания SysTick,
поэтому, разумеется, и не мигает.
Что я делаю не так?
Как правильно включить в Keil режим C++?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 6)
Lotor
сообщение Apr 9 2013, 07:31
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 476
Регистрация: 3-07-07
Из: Санкт-Петербург
Пользователь №: 28 866



Гуглите по этому форуму ключевую фразу: extern "C"


--------------------
Ковырял чукча отверткой в ухе, звук в телевизоре и пропал.
Go to the top of the page
 
+Quote Post
Sidoroff
сообщение Apr 9 2013, 10:14
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 46
Регистрация: 3-07-06
Пользователь №: 18 536



Как связано extern "C" и неработающие прерывания?
Можно поточнее подсказки?
Go to the top of the page
 
+Quote Post
Tahoe
сообщение Apr 9 2013, 10:42
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 459
Регистрация: 30-03-06
Из: Москва
Пользователь №: 15 600



Цитата(Sidoroff @ Apr 9 2013, 14:14) *
Можно поточнее подсказки?

Да куда уж точнее?
Go to the top of the page
 
+Quote Post
demiurg_spb
сообщение Apr 9 2013, 12:10
Сообщение #5


неотягощённый злом
******

Группа: Свой
Сообщений: 2 746
Регистрация: 31-01-08
Из: Санкт-Петербург
Пользователь №: 34 643



Эту тему стоит закрепить в хедере раздела ARM.
Ну или составить FAQ по типичным граблям начинающего плюсатого, а можно и не плюсатого армовода.


--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
Go to the top of the page
 
+Quote Post
SChe
сообщение Apr 9 2013, 13:18
Сообщение #6





Группа: Новичок
Сообщений: 3
Регистрация: 8-04-13
Пользователь №: 76 408



Код
extern "C" {    
    void EXTI1_IRQHandler(void) {
        EXTI_Handler_1();
        EXTI->PR |= EXTI_PR_PR1;
    }
}


код для STM32L1xx, для STM32F4 должно быть аналогично

Сообщение отредактировал IgorKossak - Apr 9 2013, 19:22
Причина редактирования: [codebox] для длинного кода, [code] - для короткого!!!
Go to the top of the page
 
+Quote Post
demiurg_spb
сообщение Apr 9 2013, 13:32
Сообщение #7


неотягощённый злом
******

Группа: Свой
Сообщений: 2 746
Регистрация: 31-01-08
Из: Санкт-Петербург
Пользователь №: 34 643



Цитата(SChe @ Apr 9 2013, 17:18) *
Позволю себе внести 3 правки в ваш вариант.
Код
extern "C" void EXTI1_IRQHandler(void)
{
    EXTI->PR = EXTI_PR_PR1;
    EXTI_Handler_1();
}


--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 15:58
Рейтинг@Mail.ru


Страница сгенерированна за 0.01395 секунд с 7
ELECTRONIX ©2004-2016