STM32 новичку в ARM что к чему

Кто любит RISC в жизни, заходим, не стесняемся.
Ответить
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2081
Зарегистрирован: Пт май 31, 2013 17:14:38
Откуда: Украина, Винница

Сообщение Ярослав555 »

так и делаю - реинит, активация CS и потом старт передачи. И в начале первого байта имею хрень. На скрине и в коде ведь все видно - в коде кс включается после инита, а на скрине мусор после опускания кс.
Реклама
Друг Кота
Аватара пользователя
Сообщения: 7362
Зарегистрирован: Пт авг 28, 2009 21:34:30
Откуда: 845-й км.

Сообщение uldemir »

Вычитал, что есть такая штука у кортексов как bit-banding. А вот вопрос у stm32f0/1 оно есть? И как его можно в коде нормально написать? не писать же #define xxx (*((volatile uint8_t *)(0x420034673640))).
А люди посмотрят и скажут: "Собаки летят. Вот и осень."
Реклама
Собутыльник Кота
Аватара пользователя
Сообщения: 2567
Зарегистрирован: Вт май 01, 2018 19:44:47

Сообщение VladislavS »

uldemir, не трать время. Для доступа к ногам пользуйся регистрами BSRR и BRR.
Друг Кота
Аватара пользователя
Сообщения: 7362
Зарегистрирован: Пт авг 28, 2009 21:34:30
Откуда: 845-й км.

Сообщение uldemir »

Ну а всё же? Собственно, этот вопрос не совсем по теме stm. С этим bit-band -ом столкнулся в MSP432... Есть какие общие принципы как именованно обратиться к этим регистрам? В лекции только и написано, что адрес сдвинуть на 5 бит, разряд на 1 (или 2?) и прибавить 0x42000000. Но адреса в голове как-то не держатся.
А люди посмотрят и скажут: "Собаки летят. Вот и осень."
Реклама
Эиком - электронные компоненты и радиодетали
Собутыльник Кота
Аватара пользователя
Сообщения: 2567
Зарегистрирован: Вт май 01, 2018 19:44:47

Сообщение VladislavS »

Ты программу в голове что-ли выполняешь? Написал один раз макрос и пользуйся. Компилятор всё сам посчитает.
Реклама
Друг Кота
Аватара пользователя
Сообщения: 7362
Зарегистрирован: Пт авг 28, 2009 21:34:30
Откуда: 845-й км.

Сообщение uldemir »

Ай, ладно, не трудитесь... сам разберусь.
А люди посмотрят и скажут: "Собаки летят. Вот и осень."
Реклама
Друг Кота
Аватара пользователя
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

Сообщение dosikus »

У F0 его отродясь небыло ...
А VladislavS прав...
Опытный кот
Аватара пользователя
Сообщения: 819
Зарегистрирован: Вт окт 23, 2012 13:17:25
Откуда: Прокопьевск

Сообщение Oxford »

Он наверно про технику доступа к отдельным битам в памяти. Регионы.

В F1 есть BitBanding
Инженер R@D

Telegram чат: https://t.me/radiowolf или в поиске приложения @radiowolf. Личка:@cncoxford
Контактная информация:
Друг Кота
Аватара пользователя
Сообщения: 7362
Зарегистрирован: Пт авг 28, 2009 21:34:30
Откуда: 845-й км.

Сообщение uldemir »

Нет, меня интересовало как написать это обращение без магических цифр. Оказалось, что есть макрос. Только у каждого производителя он называется по-своему. У TI (собственно, я сейчас развлекаюсь с MSP432P401R и у него нет BSRR) BITBAND_PERI и BITBAND_SRAM. У ST - BIT_BAND_PER и BIT_BAND_SRAM.
А люди посмотрят и скажут: "Собаки летят. Вот и осень."
Опытный кот
Аватара пользователя
Сообщения: 819
Зарегистрирован: Вт окт 23, 2012 13:17:25
Откуда: Прокопьевск

Сообщение Oxford »

Вычитал, что есть такая штука у кортексов как bit-banding.
Есть.
А вот вопрос у stm32f0/1 оно есть?
У F0 нету, у F1 есть.
И как его можно в коде нормально написать? не писать же #define xxx (*((volatile uint8_t *)(0x420034673640))).
Здесь вопрос не понятен. Что вы хотите запрограммировать.
ST - BIT_BAND_PER и BIT_BAND_SRAM.
Это вы где вычитали?
Инженер R@D

Telegram чат: https://t.me/radiowolf или в поиске приложения @radiowolf. Личка:@cncoxford
Контактная информация:
Друг Кота
Аватара пользователя
Сообщения: 7362
Зарегистрирован: Пт авг 28, 2009 21:34:30
Откуда: 845-й км.

Сообщение uldemir »

Это допрос? в гугле нашел ссылку на какую-то статью про bit-band на stm32. Вкладку уже закрыл, потому не скажу точно где. Сам не проверял, но по образцу поискал в хидерах на msp432. Собственно, я для себя уже нашел и понял как красиво можно это описать.

Открыл кейл с проектом на stm32f103 - не нашел такой макрос. Только один #define PERIPH_BB_BASE ((uint32_t)0x42000000). Странно. Ну ничего, понадобится - нарисую.

сорри, ютубу не воспринимаю.
Последний раз редактировалось uldemir Вс дек 30, 2018 13:57:11, всего редактировалось 2 раза.
А люди посмотрят и скажут: "Собаки летят. Вот и осень."
Опытный кот
Аватара пользователя
Сообщения: 819
Зарегистрирован: Вт окт 23, 2012 13:17:25
Откуда: Прокопьевск

Сообщение Oxford »

Инженер R@D

Telegram чат: https://t.me/radiowolf или в поиске приложения @radiowolf. Личка:@cncoxford
Контактная информация:
Идёт направо - песнь заводит, Налево - сказку говорит.
Аватара пользователя
Сообщения: 5000
Зарегистрирован: Чт апр 21, 2011 17:55:50
Откуда: Иркутск

Сообщение СКАЗОЧНИК »

Прошу прощения... Только начал изучать.

1. Скажите, правильно ли я понимаю, что SPL - стандартная библиотека для периферии, и написана она с ошибками рукожопыми индусами? Используется для упрощенного конфигурирования и написания программ для микроконтроллеров, однако, тем же самым сама усложняет все, т.к. в ней самой надо еще умудриться разобраться? Тем более, он еще и размеры кода жутко увеличивает , и лучше бы ее вообще не использовать никогда.

2. что HAL по сути тоже самое?

3. Что КубМХ это просто удобная программка, которая делает тоже самое, на основе верхних библиотек, просто наглядно, но еще более рукожопо? Зато действительно наглядно. Потом создает код, который можно воткнуть уже в любую IDE. Он еще и из инета качает...

И если исключить все, что выше, то можно и руками все написать, однако все адреса, прерывания и тому подобное будет такой геморр написать, а еще и выкопать их в мануали почти в 1000 страниц... , что с АРМ ядром лучше вообще не связываться? :shock:

4. Существует несколько ИДЭ под разные платформы, здесь на вкус и цвет товарищей нет. И вопрос холиварный.

5. Существует также Кортекс-М0, М3, М4, две из которых последние есть у меня в наличии. одну я знаю куда хочу прикрутить, и побаловаться с нею, если у меня хватит силы воли изучить, а вот вторую даже представить не могу. Тем более это уже другой М, а значит изучать надо по новой все?

З.Ы. И если всем этим не пользоваться, то еще и никто больше не поймет твою писанину, т.к. ты отошел от стандартов. А раз так, то все эти названия типа ХАЛ_ПОРТ_ПИН13_ВКЛЮЧИТЬвПУШПУЛ в другой интрепретации никто больше в мире не поймет, т.к. все привыкли к тем, что даны по умолчанию? Просто интересно. ))))
Станислав
Друг Кота
Аватара пользователя
Сообщения: 3385
Зарегистрирован: Пн окт 11, 2010 19:00:08

Сообщение Мурик »

СКАЗОЧНИК писал(а):SPL - стандартная библиотека для периферии, и написана она с ошибками рукожопыми индусами?
SPL это периферийная библиотека и написана она нормально, особенно если сравнивать с HAL.
СКАЗОЧНИК писал(а):однако, тем же самым сама усложняет все
Это не так. Вообще где вы такое услышали или прочитали? В сети много чего пишут и вы всему верите?
СКАЗОЧНИК писал(а):Тем более, он еще и размеры кода жутко увеличивает
Размер кода увеличивает, но не на много. Конфигурация периферии обычно занимает небольшую часть программы.
СКАЗОЧНИК писал(а):а вот вторую даже представить не могу. Тем более это уже другой М, а значит изучать надо по новой все?
Все не так сложно. Один из примеров. Изначально создавал проект для M3, потом понадобилось упростить и перенес на M0, а потом в другом проекте для M4 использовал много кода из первоначального проекта и перенесенного на M0. Не скажу что было сложно переносить. Потребовалась небольшая корректировка кода конфигурации GPIO и DMA а все остальное без изменений насколько помню. Использовал SPL.
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2081
Зарегистрирован: Пт май 31, 2013 17:14:38
Откуда: Украина, Винница

Сообщение Ярослав555 »

[uquote="СКАЗОЧНИК",url="/forum/viewtopic.php?p=3539808#p3539808"]будет такой геморр написать[/uquote]
Да не то чтобы адрес узнать гемор. Периферия сложновата, и чтобы приемлемо по качеству/скорости писать нужно на интуитивном уровне понимать как оно все работает и кто кому там может мешать. В кубе удобно распределить ресурсы - что включить, что не включать, одна периферия блокирует ноги другой. Там это все ясно через пару минут. С HAL в принципе проблем (у меня) нет. Оно может и не идеальное с чисто спортивной точки зрения, но работает.

Кстати, если кто помнит я в своем проекте пытался использовать динамику, векторы и стринги. В итоге динамику выпилил и переделал инициализацию через отдельный метод - так понятнее куда и кому ушла оперативка. Векторы выпилил - жрет кучу оператвы. Оставил только в одном месте, где без него неудобно шо капец. Со стрингами была беда какая-то. Прошивка работала. Я в коде добавил варианов в свич с присвоением строк в стринг. И у меня не хватило никакой памяти. Может компилятор пытался прикинуть размер стринга по сумме всех строчек, не знаю. За вечер написал свой стринг со статическим буффером и проблемы кончились. Вот такие вот итоги года.
Идёт направо - песнь заводит, Налево - сказку говорит.
Аватара пользователя
Сообщения: 5000
Зарегистрирован: Чт апр 21, 2011 17:55:50
Откуда: Иркутск

Сообщение СКАЗОЧНИК »

Ну... читал много где. Из старых арихвов у Ди-Халта. Вот там и прочно уложилось в голове, что эти библиотеки косячные. Потом из нового на всяких сайтах.
Пока что научился прошивать и стирать с помощью Ст-Линка2 микроконтроллер на платке Блю-Пилл что-ли называется. Китайская.
Хочется нарисовать что-то свое, но страдают знания языка Си и самого МК, однако, второе уже более или менее понятнее становится. Просто в них больше регистров для настройки, чем у АВР. Ну и нюансы по тактированию всего и вся.

З.Ы. С Новым годом!

Добавлено after 5 minutes 31 second:
Так SPL и HAL это одно и тоже? просто разные люди разное сделали?
Станислав
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2081
Зарегистрирован: Пт май 31, 2013 17:14:38
Откуда: Украина, Винница

Сообщение Ярослав555 »

[uquote="СКАЗОЧНИК",url="/forum/viewtopic.php?p=3539826#p3539826"]читал много где.
Так SPL и HAL это одно и тоже? просто разные люди разное сделали?[/uquote]
Всё что древнее 16 года стараюсь не читать, максимум 15.
Дело как было. Они пилили SPL, ее можно было в проект подключать.
А куб умел только показывать на картинке какие ножки куда подключены и энергопотребление мог посчитать.
Потом они SPL забросили, и сделали HAL и куб научили генерировать код инициализации и создавать проекты под разные среды. И вот так оно живет. Есть еще библиотека LL, ее можно в кубе выбрать. Можно даже что-то халом инициализировать, а что-то ЛЛ-ом.
Текущее состояние СПЛ мне неизвестно, но люди проекты на нем делают, вроде работает.
Поставщик валерьянки для Кота
Сообщения: 2089
Зарегистрирован: Вс июн 19, 2016 09:32:03

Сообщение Reflector »

[uquote="Ярослав555",url="/forum/viewtopic.php?p=3539823#p3539823"]Векторы выпилил - жрет кучу оператвы. Оставил только в одном месте, где без него неудобно шо капец.[/uquote]Если написал статический стринг, то почему не написать статический vector?
Друг Кота
Аватара пользователя
Сообщения: 3385
Зарегистрирован: Пн окт 11, 2010 19:00:08

Сообщение Мурик »

Тогда сделайте мигалку.
Потом немного поотлаживайте.
И понимание постепенно придет.
СКАЗОЧНИК писал(а):Из старых арихвов
Прочитайте что в старых архивах про Windows пишут.
СпойлерИзображение
42182698_1239098169_vinda__nadstroyka_nad_dos.jpg
(84.51 КБ) 93 скачивания
Пишут что это бесполезная надстройка над DOS. Откажемся от винды и перейдем на DOS?
Ярослав555 писал(а):А куб умел только показывать на картинке какие ножки куда подключены и энергопотребление мог посчитать.
Первые версии куба (тогда он по другому назывался - MicroXplorer) генерировали код с SPL.
Идёт направо - песнь заводит, Налево - сказку говорит.
Аватара пользователя
Сообщения: 5000
Зарегистрирован: Чт апр 21, 2011 17:55:50
Откуда: Иркутск

Сообщение СКАЗОЧНИК »

О! Я уже кое-что начал понимать. )))
Из всех библиотек, которые подключаются к главному файлу, потом используются определенные (как их правильно назвать?) шаблоны. Вот к любому Мэйн фалу надо подключить библиотеку с настройкой тактирования устройств и конфигурации портов ввода-вывода. В общем-то они так и называются, только везде применяются аббревиатуры.
И потом в коде уже если началась строка с RCC и дальше всякая бурда, то эта строка относится к настройке тактирования чего-либо, а если началась строка с GPIO, то это уже настройка портов. ))))
Станислав
Ответить

Вернуться в «ARM»