Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: weak alias
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Cредства разработки для МК > IAR
drozel
Есть такой код:
Код
void blocking_handler(void)
{
    while (1);
}

#pragma weak nvic_wwdg_isr = blocking_handler

vector_table_t vector_table = {
    .irq = {
        nvic_wwdg_isr
    }

Дает ошибку
Цитата
Error[Pe020]: identifier "nvic_wwdg_isr" is undefined


Судя по хелпу IAR (EWARM 7.40) поддерживает такой алиас. Ниже - выдержка из хелпа
Цитата
To make NMI_Handler a weak alias for Default_Handler, write:
#pragma weak NMI_Handler=Default_Handler

Однако, компилятор не желает распознавать такой алиас при попытке использовать его адрес.
Где-то я ошибся или такой вот глюк?
zltigo
QUOTE (drozel @ Oct 14 2015, 13:28) *
Где-то я ошибся или такой вот глюк?

Дурью от IAR маяться незачем совершенно sad.gif. Возьмите startup и напишите в нем, все что хотите.
drozel
Цитата(zltigo @ Oct 14 2015, 17:34) *
Дурью от IAR маяться незачем совершенно sad.gif.

К сожалению, это дурь от разработчиков либы libopencm3.
Либа хорошая, написать стартап на асме можно, но хотелось бы сделать красиво и силами либы.
Но как запасной вариант, учту, спасибо
den_po
попробуйте добавить:
__weak void nvic_wwdg_isr(void);
zltigo
QUOTE (drozel @ Oct 14 2015, 15:21) *
Либа хорошая, написать стартап на асме можно...

1)Для этого Corteх он на чистом Си.
2)Если Вы считаете, что он находтся в библиотеке, то к чему тогда читать хелпы к IAR?
3)И в том и другом случае исходники его есть - незачем читать хелпы, если можно читать исходники.
drozel
Цитата(zltigo @ Oct 14 2015, 19:42) *
2)Если Вы считаете, что он находтся в библиотеке, то к чему тогда читать хелпы к IAR?

Библиотека написана для GCC, используются его раширения языка. Пытался разобраться, есть ли этот код - чистый си или опять прибамбас ГЦЦ. Выяснилось, что си, поддержку конструкции подтвердил хелп иара. Почему тогда не компилит? Задал вопрос сообществу. Вроде логично..

Цитата(den_po @ Oct 14 2015, 19:13) *
попробуйте добавить:
__weak void nvic_wwdg_isr(void);

Спасибо Вам огромное. Все получилось.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.