tremor 0 8 ноября, 2018 Опубликовано 8 ноября, 2018 · Жалоба Разъясните эту строчку: ((GPIO_TypeDef *) GPIOF_BASE) Понимаю, что структура, понимаю что указатель, но как-то странно написано. обычно пишут так: char *p; А тут заморочено, то ли присвоение значения указателю, то ли что. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mcheb 0 8 ноября, 2018 Опубликовано 8 ноября, 2018 · Жалоба указатель на структуру с адресом GPIOF_BASE . У этих из MCD team всё как-то так сделано. Надо смириться или самому всё переписать. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 119 8 ноября, 2018 Опубликовано 8 ноября, 2018 · Жалоба 37 минут назад, tremor сказал: Понимаю, что структура, понимаю что указатель, но как-то странно написано. Явное приведение целочисленной константы GPIOF_BASE к типу "указатель на GPIO_TypeDef". Что именно тут странного? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
GeorgK 1 8 ноября, 2018 Опубликовано 8 ноября, 2018 · Жалоба Обычный подход к взаимодействию с железом, регистры которого проецируются в адресное пространство. Для чтения/записи такого регистра необходим механизм чтения/записи по фиксированному физическому адресу, в данном случае GPIOF_BASE. Точнее, по этому адресу может быть расположен и ряд регистров, определяемых структурой. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
artemkad 51 8 ноября, 2018 Опубликовано 8 ноября, 2018 · Жалоба Вас видать путает один #define вот так возможно станет понятнее: ((*GPIO_TypeDef)0x48001400 ) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
slavka012 0 13 ноября, 2018 Опубликовано 13 ноября, 2018 · Жалоба On 11/7/2018 at 9:10 PM, mcheb said: указатель на структуру с адресом GPIOF_BASE . У этих из MCD team всё как-то так сделано. Надо смириться или самому всё переписать. Так вообще-то у всех написано. Как бы вы это переписали? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 184 13 ноября, 2018 Опубликовано 13 ноября, 2018 · Жалоба 1 час назад, slavka012 сказал: Так вообще-то у всех написано. Отучайтесь говорить за всех. Если Вы знаете только один способ чего-то, это совсем не значит, что нет людей знающих больше Вас. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
slavka012 0 13 ноября, 2018 Опубликовано 13 ноября, 2018 · Жалоба 1 hour ago, jcxz said: Отучайтесь говорить за всех. Если Вы знаете только один способ чего-то, это совсем не значит, что нет людей знающих больше Вас. Хехе. Понты дороже денег? Как же вы еще описываете группу хардверных регистров по определенному адресу? Отучайтесь делать ценные указания, приучайтесь отвечать по существу. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Arlleex 131 13 ноября, 2018 Опубликовано 13 ноября, 2018 · Жалоба 1 hour ago, slavka012 said: Так вообще-то у всех написано. Как бы вы это переписали? Полагаю, средствами линкера на этапе статической разметки памяти. Также, как и под обычные переменные при размещении по желаемым областям адресного пространства. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 184 13 ноября, 2018 Опубликовано 13 ноября, 2018 · Жалоба 6 минут назад, slavka012 сказал: Хехе. Понты дороже денег? Как же вы еще описываете группу хардверных регистров по определенному адресу? Например: EXTERN volatile HWREG_MAP(GPIO) GPIO[16] @ 0x48028000; Либо в скрипте компоновщика. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
slavka012 0 13 ноября, 2018 Опубликовано 13 ноября, 2018 · Жалоба 3 minutes ago, Arlleex said: Полагаю, средствами линкера на этапе статической разметки памяти. Также, как и под обычные переменные при размещении по желаемым областям адресного пространства. Нда, ну я понимаю, что это можно сделать, но решение это на порядок более убогое чем дефайны. Мало того, что информация о регистрах становится размазана по бОльшему количеству файлов, так что ее становится труднее проверять и поддерживать, так еще она и находится в не переносимой форме. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Integro 0 13 ноября, 2018 Опубликовано 13 ноября, 2018 · Жалоба 2 hours ago, slavka012 said: Так вообще-то у всех написано. Как бы вы это переписали? Поддерживаю!!! NXP, ST, Microchip, SiliconLabs делают именно так. Что за бред с линковщиком, вы вообще о чем? при условии что у каждого компилятора свои особености работы с линковщиком! Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
slavka012 0 13 ноября, 2018 Опубликовано 13 ноября, 2018 · Жалоба 9 minutes ago, jcxz said: Например: EXTERN volatile HWREG_MAP(GPIO) GPIO[16] @ 0x48028000; Это что за синтаксис, @? Хорошо если ваш компилятор это понимает, но это непереносимый код... В чьей библиотеке так написано? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 184 13 ноября, 2018 Опубликовано 13 ноября, 2018 · Жалоба 4 минуты назад, slavka012 сказал: Это что за синтаксис, @? Хорошо если ваш компилятор это понимает, но это непереносимый код... Это IAR. Явное задание имени секции или абсолютного адреса для объекта данных. И в других компиляторах есть аналоги. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
slavka012 0 13 ноября, 2018 Опубликовано 13 ноября, 2018 · Жалоба Замечательно. Аналоги, конечно, есть, но непереносимые. В чьих либах так написано? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться