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

 
 
 
Reply to this topicStart new topic
> IAR5.50.5 CM0 C++, компилятор выбрасывает обработчик прерывания
igorenja
сообщение Oct 8 2010, 16:21
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 130
Регистрация: 8-08-08
Из: Новосибирск
Пользователь №: 39 488



Доброе время суток!
Мучаю примерчик от IAR для LPC11C14. Программка примитивная, при включении контроллера записывает в уарт сообщение, потом заходит в главный цикл и оттуда выводит сообщение если обработчиком прерывания от таймера был поднят флажок. Если в опциях проекта стоит "язык С" всё работает нормально. Если ставлю С++ прерывания не работают. Сгенерил два map файла, смотрю и вижу что обработчика прерывания CT32B0_IRQHandler в плюсовом мап файле нет (вернее есть с нулевым размером)...
Чё делать дальше незнаю.

Всем заранее спасибо!
Прикрепленные файлы
Прикрепленный файл  maps.rar ( 5.37 килобайт ) Кол-во скачиваний: 25
 
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Oct 8 2010, 21:16
Сообщение #2


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Могу предположить, что его надо объявить с квалификатором extern "C"


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
igorenja
сообщение Oct 9 2010, 02:00
Сообщение #3


Частый гость
**

Группа: Свой
Сообщений: 130
Регистрация: 8-08-08
Из: Новосибирск
Пользователь №: 39 488



Цитата(Сергей Борщ @ Oct 9 2010, 04:16) *
Могу предположить, что его надо объявить с квалификатором extern "C"

Обработчик прерывания описан в том же файле что и main(). Компилируется соответственно вместе. Мне кажется это тут непичем...
Может быть этот квалификатор нужно указать для cstartup.s ?
Go to the top of the page
 
+Quote Post
GetSmart
сообщение Oct 9 2010, 02:06
Сообщение #4


.
******

Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753



Цитата(igorenja @ Oct 9 2010, 07:00) *
Может быть этот квалификатор нужно указать для cstartup.s ?

Нет.
Вы бы лучше сначала проверили.


--------------------
Заблуждаться - Ваше законное право :-)
Go to the top of the page
 
+Quote Post
sonycman
сообщение Oct 9 2010, 04:04
Сообщение #5


Любитель
*****

Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695



Цитата(igorenja @ Oct 9 2010, 06:00) *
Обработчик прерывания описан в том же файле что и main(). Компилируется соответственно вместе. Мне кажется это тут непичем...

Ну и что, что вместе?
Проблема не в main(), а в том, что из .asm файла не видно обработчик прерывания, если он объявлен в С++ файле.
Оберните объявление extern "C" {}.
Go to the top of the page
 
+Quote Post
igorenja
сообщение Oct 9 2010, 04:09
Сообщение #6


Частый гость
**

Группа: Свой
Сообщений: 130
Регистрация: 8-08-08
Из: Новосибирск
Пользователь №: 39 488



Цитата(sonycman @ Oct 9 2010, 11:04) *
Ну и что, что вместе?
Проблема не в main(), а в том, что из .asm файла не видно обработчик прерывания, если он объявлен в С++ файле.
Оберните объявление extern "C" {}.


Попробую. Вечером напишу результат.
Спасибо.
Go to the top of the page
 
+Quote Post
igorenja
сообщение Oct 9 2010, 06:31
Сообщение #7


Частый гость
**

Группа: Свой
Сообщений: 130
Регистрация: 8-08-08
Из: Новосибирск
Пользователь №: 39 488



Проверил, работает.

Всем большое спасибо!
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 26th July 2025 - 01:14
Рейтинг@Mail.ru


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