|
Indigo + Yagarto + J-Link, после IAR EWARM |
|
|
|
Oct 27 2012, 12:45
|

Профессионал
    
Группа: Свой
Сообщений: 1 175
Регистрация: 5-01-05
Пользователь №: 1 807

|
После знакомства с Eclipse Indigo SR2 и установки и настройки тулчейна остаются некоторые вопросы: 1. Проект с пустой main функцией не захотел компилироваться без ошибок при простом подключении библиотеки периферии с сайта ST. Разбор полетов показал, что некоторые исходники библиотеки не видят определения в собственных хидерах. Я долго с этим разбирался, а в результате все решилось простым редактированием соотв хидеров (просто ставим где-нибудь в файле пробел потом его удаляем, сохраняем файл) и ошибки компиляции пропадают... У кого-нибудь такое уже было? И как часто приходится вам сталкиваться с такими глюками в Eclipse? 2. Вторую проблему пока не решил... GCC уже совсем другой компилятор, поэтому наработанный код в IAR у меня тут не работает. Особенно это касается препроцессора. В IARе я устраивал всякие игры с дефайнами и все нормально работало - здесь такие вещи уже не проходят: Код #define PINCLR(x) (_PORT_POS(x##p)##->BSRR=##_BIT_BR(x##b)) выдается ошибка: Код pasting ")" and "->" does not give a valid preprocessing token main.c /IndigoTest/src line 39 C/C++ Problem pasting "=" and "_BIT_BR" does not give a valid preprocessing token main.c /IndigoTest/src line 39 C/C++ Problem какие есть пути для исправления? Я так понимаю, для GCC такие дефайны слишком сложные?
|
|
|
|
|
 |
Ответов
|
Oct 27 2012, 19:08
|

Профессионал
    
Группа: Свой
Сообщений: 1 175
Регистрация: 5-01-05
Пользователь №: 1 807

|
Цитата(SSerge @ Oct 27 2012, 20:00)  Вообще-то именно те ##, на которые ругается, они лишние, их можно безболезненно удалить или заменить на пробелы. Если я вас правильно понял, то макрос нужно переделать так: Код #define PINCLR(x) (_PORT_POS(x##p)->BSRR=_BIT_BR(x##b)) Это действительно приводит к устранению исходных ошибок, но появляется одна новая: Код 'GPIO_BSRR_BR0' undeclared (first use in this function) main.c /IndigoTest/src line 39 C/C++ Problem Symbol 'GPIO_BSRR_BR0' could not be resolved main.c /IndigoTest/src line 39 Semantic Error Т.е. должно преобразовываться в GPIO_BSRR_BR_0, а по факту GPIO_BSRR_BR0. В IAR'е все нормально. Да... Пришлось все переосмыслить и в итоге заработало нормально: Код // где-то в .h файле #define _PORT_POS_(a) GPIO##a #define _PORT_POS(a) _PORT_POS_(a) #define _BIT_BR_(a) GPIO_BSRR_BR_##a #define _BIT_BR(a) _BIT_BR_(a)
#define PINCLR(x) (_PORT_POS(x##p)->BSRR=_BIT_BR(x##b))
// где-то в .c файле #define TESTp B // порт пина #define TESTb 0 // номер пина
int main() { PINCLR(TEST); // сбрсываем пин B0 (должно преобразоваться в GPIOB->BSRR = GPIO_BSRR_BR_0) return 0; }
|
|
|
|
|
Oct 27 2012, 19:11
|

фанат дивана
     
Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684

|
Извините, я сильно не вчитывался, но может быть так: Код #define _BIT_BR_(a) GPIO_BSRR_BR_##a #define _BIT_BR(a) _BIT_BR_(a) --- Упс, опоздал
--------------------
Если бы я знал, что такое электричество...
|
|
|
|
Сообщений в этой теме
ivainc1789 Indigo + Yagarto + J-Link Oct 27 2012, 12:45 AHTOXA Цитата(ivainc1789 @ Oct 27 2012, 18:45) в... Oct 27 2012, 14:10 ivainc1789 Переписать что-то не так-то просто оказалось. В IA... Oct 27 2012, 15:04 ivainc1789 Осталась давнее предупреждение из файла STM32F0xx_... Oct 28 2012, 06:26 ivainc1789 Вопрос с расширениями IAR решил через функции CMSI... Oct 30 2012, 05:57 _Артём_ Цитата(ivainc1789 @ Oct 30 2012, 07:57) 1... Oct 30 2012, 06:36  ivainc1789 Цитата(_Артём_ @ Oct 30 2012, 10:36) Разн... Oct 30 2012, 10:22   _Артём_ Цитата(ivainc1789 @ Oct 30 2012, 12:22) В... Oct 30 2012, 20:32    ivainc1789 Цитата(_Артём_ @ Oct 31 2012, 00:32) Проб... Oct 31 2012, 17:09     _Артём_ Цитата(ivainc1789 @ Oct 31 2012, 19:09) 1... Oct 31 2012, 19:41      ivainc1789 Цитата(_Артём_ @ Oct 31 2012, 23:41) У ме... Nov 1 2012, 05:16       Сергей Борщ QUOTE (ivainc1789 @ Nov 1 2012, 08:16) Я ... Nov 1 2012, 07:11        AHTOXA Цитата(Сергей Борщ @ Nov 1 2012, 13:11) e... Nov 1 2012, 07:38       _Артём_ Цитата(ivainc1789 @ Nov 1 2012, 07:16) У ... Nov 1 2012, 16:05     AHTOXA Цитата(ivainc1789 @ Oct 31 2012, 23:09) 6... Nov 1 2012, 04:30     demiurg_spb Цитата(ivainc1789 @ Oct 31 2012, 21:09) 3... Nov 1 2012, 05:24      _Артём_ Цитата(demiurg_spb @ Nov 1 2012, 07:24) К... Nov 1 2012, 11:58       demiurg_spb Во всяком случае мне в это хотелось бы верить
А у ... Nov 1 2012, 12:14        _Артём_ Цитата(demiurg_spb @ Nov 1 2012, 14:14) В... Nov 1 2012, 12:41         demiurg_spb Так надо раскрутить и понять откуда ноги растут. Н... Nov 1 2012, 12:44          _Артём_ Цитата(demiurg_spb @ Nov 1 2012, 14:44) Т... Nov 1 2012, 12:58           demiurg_spb нет ни одного f после констант.
Но это наверное не... Nov 1 2012, 13:19      ivainc1789 Цитата(demiurg_spb @ Nov 1 2012, 09:24) д... Nov 1 2012, 15:32 ivainc1789 1. На сайте GNU ARM plugin ознакомился с "изв... Nov 4 2012, 06:55 _Артём_ Цитата(ivainc1789 @ Nov 4 2012, 08:55) В ... Nov 4 2012, 23:23  ivainc1789 Цитата(_Артём_ @ Nov 5 2012, 03:23) Нет о... Nov 5 2012, 09:58   Сергей Борщ QUOTE (ivainc1789 @ Nov 5 2012, 12:58) От... Nov 5 2012, 10:25    ivainc1789 Цитата(Сергей Борщ @ Nov 5 2012, 14:25) н... Nov 5 2012, 15:43   _Артём_ Цитата(ivainc1789 @ Nov 5 2012, 11:58) Т.... Nov 5 2012, 12:59 AHTOXA Цитата(ivainc1789 @ Nov 1 2012, 21:32) Я ... Nov 4 2012, 08:30 ReAl Цитата(AHTOXA @ Nov 4 2012, 10:30) А вы п... Nov 4 2012, 09:35
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|