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

 
 
> Неудачный переход с С на С++, Расположение обработчика прерывания
baralgin
сообщение Mar 10 2010, 10:20
Сообщение #1


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

Группа: Участник
Сообщений: 92
Регистрация: 23-12-08
Из: Кишинёв
Пользователь №: 42 680



Решил перевести проект с С на С++, код писался аккуратно поэтому появилось совсем немного несоответствий (типа TRUE->true). Но программа не работает. Проект пишется одновременно в Keil и IAR. Отладка показывает что код зацикливается в недрах старап-файла на этапе инициализации переферии. В Keil  

Код
...</P><P>DMA2_Channel4_5_IRQHandler
                B       .

                ENDP

                ALIGN


И в IAR:

Код
...</P><P>TIM2_IRQHandler
        B TIM2_IRQHandler


TIM2_IRQHandler расположен в main.cpp (там же и прерывание от DMA). Похоже что моих обработчиков компилятор неузрел. Наверное проблема изъезжена, но в хэлпе ничего не нашёл.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
sergeeff
сообщение Mar 10 2010, 21:33
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 481
Регистрация: 10-04-05
Пользователь №: 4 007



Цитата
Кроме того, у компилятора есть то, что он компилирует. Помедитируйте над этим на досуге..


Как там у классика "Когда вы говорите, мне кажется, что вы бредите".

То что компилирует компилятор, это что? Единицы компиляции, или файлы или программные модули. Народ в мире по разному их называет. И больше ничего, по крайней мере, у С/С++ компилятора нет.

И над чем я должен медитировать? Над "умолчательными обработчиками", которые есть где-то там в "кроме того, что компилятор компилирует"?

Функция в обработчике прерывания или есть или ее нет. Автор топика ее переназначил на свою С++ функцию. Возникает вопрос, каким это экзотическим способом, что линкер глазом не моргнул на его манипуляции и оставил эти самые пресловутые "умолчательные обработчики". Вы хотите меня убедить, что в startup'e есть функции обработки прерывания от таймера TIM2_IRQHandler, и автор прописал свою собственную точно такую функцию TIM2_IRQHandler в main, объявил ее как extern "C" и линкер не обнаруживает никакого конфликта имен? Не верю.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- baralgin   Неудачный переход с С на С++   Mar 10 2010, 10:20
- - sergeeff   Чтобы в ассемблерной части программы вы могли испо...   Mar 10 2010, 10:38
- - baralgin   Спасибо, обьявление как extern "C" помог...   Mar 10 2010, 11:19
|- - AHTOXA   Цитата(baralgin @ Mar 10 2010, 16:19) Стр...   Mar 10 2010, 11:40
|- - jorikdima   Цитата(AHTOXA @ Mar 10 2010, 14:40) Потом...   Mar 10 2010, 12:24
- - sergeeff   Про "умолчательные обработчики прерываний...   Mar 10 2010, 12:30
- - baralgin   Да нет, линкер не ругался и исправно генерил код. ...   Mar 10 2010, 12:48
- - sergeeff   Тем не менее "умолчательные обработчики...   Mar 10 2010, 13:00
|- - AHTOXA   Цитата(sergeeff @ Mar 10 2010, 18:00) Тем...   Mar 10 2010, 13:50
|- - sergeeff   Цитата(AHTOXA @ Mar 10 2010, 17:50) Хорош...   Mar 10 2010, 14:28
|- - AHTOXA   Цитата(sergeeff @ Mar 10 2010, 19:28) У к...   Mar 10 2010, 16:25
|- - shreck   Цитата(sergeeff @ Mar 11 2010, 05:33) Вы ...   Mar 11 2010, 03:11
- - sergeeff   Да уж, чего только не по напридумывают.   Mar 11 2010, 09:33
- - AHTOXA   Цитата(sergeeff @ Mar 11 2010, 14:33) Да ...   Mar 11 2010, 11:49
- - sergeeff   Цитата(AHTOXA @ Mar 11 2010, 14:49) Это м...   Mar 11 2010, 13:18


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

 


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


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