Перейти к содержанию
    

давайте делится удобными дефайнами для stm32f10x

Совершенно ага!

Если в параметрах будет const (разрулить возможные обращения по записи) - то на выходе получим минимум миниморум. Посмотрите на lib_at91samxxxxxxx.h

 

не понятно почему так не сделана либа STM, и к чему тогда возникающие периодические споры про корявую либу СТМ или какие то хитрые дефайны с регистрами, если всего то надо разок потратить время и перебить функции на инлайн.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

если всего то надо разок потратить время и перебить функции на инлайн.

И некоторые из них просто станут неработоспособными... если не ошибаюсь... SPI, например...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

не понятно почему так не сделана либа STM

Это вроде как логическое продолжение CMSIS. Потом, там MISRA2004 проехалась, потом - операции с битовыми полями априори неизвестно как себя ведут на разных компилерах, иначе все было бы попроще. Всему есть причины.

 

Либой для АТ91 тоже не очень приятно пользоваться, я имею ввиду длинные префиксы в именах.

 

--

Как альтернатива - Coocox"овые либы... Но там другая сторона медали: в STшных - инициализация через структуру, зато функции с 2-мя параметрами и повторное использование, в кокосовых - функции с большим числом параметров. Хрен редьки, как говорится.

 

И некоторые из них просто станут неработоспособными... если не ошибаюсь... SPI, например...

Ухты! Где?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ухты! Где?

Точно уже не припомню...

Зато точно помню... что желание инлайнить весь этот колхоз, почему-то, не возникает...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

ну да стандарты, есть стандарты. Но для себя решил, надо выделить время и по той периферии которая используется заинлайних их функции. Что удобно, что там объявлены большинство регистров, иногда даташит даже открывать не приходится, просто надо как и всё под себя с оптимизировать минимальными ресурсами. Даже имена им менять не нужно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Что удобно, что там объявлены большинство регистров, иногда даташит даже открывать не приходится, просто надо как и всё под себя с оптимизировать минимальными ресурсами. Даже имена им менять не нужно.

Вот только есть одна неприятность. Учитывая, как у ST оъявлены биты, использовать bitband не получится. Остается уповать на компилер, но тот же IAR не торопится задействовать bitband регион.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Смотрю я на этот битбанд и что-то выигрыш не особо просматривается... кроме атомарности.

Изменено пользователем _Pasha

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

выигрыш не особо просматривается... кроме атомарности.

А прочего от него особо и не требуется.

 

Ну и, как обычно, смотреть надо на проблему в целом, а не на стоимость отдельных частей. Использование bitband позволит избавиться от ENTER_CRITICAL()/EXIT_CRITICAL(). Ну и как теперь, выигрыш "просмотрелся"(с) ? ;)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А, вроде, в новеньких F3 вход-вывод не попадает в bit-band?...

Bitband, это фича ядра, не контроллера. Производители ядра говорят что такая фича есть, хоть и опционально. ST тоже говорит, что есть. См. STM32F3xxx and STM32F4xxx Cortex-M4 programming manual, "2.2.5 Bit-banding".

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Про фичу ядра согласен. Но в приведенном Вами документе для периферии выделяется Peripheral bit-band region 0x40000000-0x400FFFFF (см. стр. 31). Легко убедится (см. RM для stm32f3xx), что GPIOx туда не попадает, т.к. начинается с 0x48000000. ((

Сам с данной неприятностью столкнулся при использовании "универсальных дефайнов для работы с GPIO"...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

:biggrin:

А смысл работы GPIO в означенном регионе? Если и так чтобы установить/сбросить атомарно - все есть.

А конфигурацию пинов зачем атомарно менять? Я даже такой ситуёвины представить не могу

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А конфигурацию пинов зачем атомарно менять? Я даже такой ситуёвины представить не могу

Б-г с ней, с атомарностью. "Ситуевину представить"(с) - "легко, смеясь"(с) : как я налетел с ремапом. А именно:

А в библиотеках от ST просто в наглую подставляется константа. И совсем не факт, что она совпадет с тем, как ранее настроил программер.

 

А теперь, хотелось бы услышать любой другой способ, кроме bit-band, позволяющий безопасно установить ремап-биты. :biggrin:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А теперь, хотелось бы услышать любой другой способ, кроме bit-band, позволяющий безопасно установить ремап-биты. :biggrin:

А в RMW-операциях можно налететь на грабли и по другому - просто записав битик туда, куда не нужно, - помечено как reserved биты, а каким образом оно себя проявить может - хз.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А смысл работы GPIO в означенном регионе? Если и так чтобы установить/сбросить атомарно - все есть.

А конфигурацию пинов зачем атомарно менять? Я даже такой ситуёвины представить не могу

Написал библиотеку для работы с UART.

При инициализации передаем адрес бита ножки GPIO, отвечающую за передачу в RS-485.

Как быть теперь? Применить свою виртуальную адресацию битов портов?

По библиотеке для этих целей могу "протащить" лишь одну 32-битную переменную.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...