Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры ARM, Cortex, STM32
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.61/110: Рейтинг темы: голосов - 110, средняя оценка - 4.61
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 397
1

Варианты оформления проекта, файлы инициализации и прочее

19.12.2016, 14:23. Показов 21650. Ответов 81
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Прошу поделиться наработками или хотя бы советами по разумной организации проектов на stm32 различных серий (мне интересно пока f0 и f1). Кто как делает? Чтобы и таскать было удобно с камня на камень, и функционал можно было допилить по необходимости, не правя синхронно 5 файлов. Общий файл инициализации, или инициализация переферии отдельно в каждом модуле? Приветствуются примеры в виде папочки с проектом) Заранее спасибо!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.12.2016, 14:23
Ответы с готовыми решениями:

Варианты инициализации std::vector
Добрый день. В чём разница между тремя следующими конструкциями? 1-й вариант:...

PyCharm помечает файлы созданные внутри проекта как файлы вне проекта
Я создаю новый проект в PyCharm, и он начинает выборочно помечать файлы, как файлы вне проекта,...

Различные варианты инициализации указателя - в чём точная разница между ними?
Немного непонятен один момент. Есть некий класс Statement (конструктор используется по умолчанию)....

Стили оформления проекта в Delphi XE3
Всем привет. Подскажите мне: есть в делфи программа для работы со стилями Bitmap editor. Я там...

При создании проекта в Android Studio в макете не показывает ни кнопки ни тексты и прочее
Всем привет! Обновил Android Studio до 3.1.3 после чего, при создании нового проекта в макете не...

81
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 249
19.12.2016, 15:56 2
у меня просто созданы некоторые типовый файлы, которые практически неизменны во всех проектах на одном МК.
обычно называются типа UART, SPI, ADC и т.д. в них собрана инициализация и функции для работы с переферией + фаил func.c в котором лежит функция delay и мигалка светодиодом для тестов.
0
0 / 0 / 0
Регистрация: 11.09.2016
Сообщений: 78
19.12.2016, 18:05 3
Рекомендую пользоваться KEILом (под него много примеров готовых) или IAR (сам не пользовал поэтому не буду советовать), CubeMX (он сделает Вам папочку, открыв которую Вы получите ответы на Ваши вопросы + замена даташиту) и купить готовых плат сделанных именно STMми (с тем (или похожим) контроллером который Вы выбрали).
-Cам куб http://www.st.com/en/divelopme... ubemx.html
-Библиотеки для различных серий http://www.st.com/en/imbiddid-software/ ... tId=LN1897
-KEIL торрент ищите /ectb kP9.hytbIi ;)
-Готовые платы ищите в нете с тэгами STM32, Dyscovery, Nucleo, EVOT
0
0 / 0 / 0
Регистрация: 21.11.2012
Сообщений: 1,400
19.12.2016, 18:45 4
Чтобы и таскать было удобно с камня на камень
Я для этого стараюсь логику как можно сильнее отделять от аппаратно зависимых вещей. Но все равно, чтобы на другую серию перенести, придется много чего править. Универсальной пилюли, к сожалению, нет: регистры-то разные! А пользоваться калокубами крайне не советую. Да даже libopencm3 — говно, т.к. во-первых, его создатели периодически ломают API, а во-вторых, в критичном ко времени исполнения рантайме его использовать нельзя, а инициализацию несложно и на регистрах написать.
P.S. Пользую arm-none-eabi. Раньше пользовался по полной opencm3, в новых проектах не буду его использовать. Мои велосипеды.
0
0 / 0 / 0
Регистрация: 08.07.2016
Сообщений: 182
20.12.2016, 08:20 5
Вроде как HAL-драйверы и задуманы для "Чтобы и таскать было удобно с камня на камень" :-)
Поэтому - CubeMX .
Там только надо быть внимательным и свои строки тискать в строго отведенных местах для Юзера.
0
0 / 0 / 0
Регистрация: 21.11.2012
Сообщений: 1,400
20.12.2016, 09:28 6
HAL-драйверы и задуманы для "Чтобы и таскать было удобно с камня на камень"
Код получается абсолютно нечитаемым и жирным. Ни в коем случае!
CubeMX
И эту парашу тоже выкинуть!
0
0 / 0 / 0
Регистрация: 28.07.2016
Сообщений: 173
20.12.2016, 10:44 7
[QUOTE="Iddy_Im"][QUOTE="Цитата:[/QUOTE]
CubeMX
И эту парашу тоже выкинуть!

Отчего ж так жестоко. Это вещь имеет ряд полезных свойств, а именно:
- прикинуть периферию по ногам, кто с чем перескается и куда его лучше ремапнуть для удобства разводки платы;
- ориентировочно прикинуть потребление мк, если это важно, а искать нужные значения в datasheet лень;
- раскидать каналы dma, особенно если используются все доступные и нужно найти компромисс;
- выбрать камень с нужными параметрами дабы его потом купить)

а вот чего не стоит делать, так это генерировать в нем проекты)
0
0 / 0 / 0
Регистрация: 21.11.2012
Сообщений: 1,400
20.12.2016, 10:46 8
Ну, если так, то да. Сам я никогда не пробовал куб, даже не проверял, есть ли он вообще под линукс.
0
0 / 0 / 0
Регистрация: 28.07.2016
Сообщений: 173
20.12.2016, 10:51 9
Цитата Сообщение от Iddy_Im
Ну, если так, то да. Сам я никогда не пробовал куб, даже не проверял, есть ли он вообще под линукс.
Под линукс есть, сделали недавно. Но жуткий тормоз он ... Вот чего не хватало под линуксом, так это st-link utility
0
0 / 0 / 0
Регистрация: 21.11.2012
Сообщений: 1,400
20.12.2016, 10:53 10
Вот чего не хватало под линуксом, так это st-link utility
Без понятия, что это. st-link и st-flash для прошивки через программатор и бутлоадер, соответственно, есть. Я уж и забыл, когда для STM32 программатор использовал: через бутлоадер намного удобней! Вот STM8 — да, приходится через китайский облегченный st-link прошивать.
0
0 / 0 / 0
Регистрация: 28.07.2016
Сообщений: 173
20.12.2016, 11:03 11
кому как ...
утилитка упрощает массовое производство, ибо умеет шить в режиме конвеера. Да снимать\ставить защиту на чтение\запись памяти она так же умеет.

Ответ от товарища Otomys-dm самый действенный. Если посмотреть примеры от st, то в целом там такая концепция и прослеживается. Разве что они отдельную папку заводят - Utility, куда скидывают файлы формирования заержек\мигалок\пищалок. А периферия настраивается через файлы стандартные файлы usart.c\h, rcc.c\h и т.д., НО подключаемых через stm32f0XX_eval файлы. В этих самых файлах они и реализуют абстракцию, подключая нужный контроллер, задавая настройки перефирии через defymi.
В новых проектах у себя стараюсь придерживаться этого правила.
0
0 / 0 / 0
Регистрация: 30.04.2015
Сообщений: 721
20.12.2016, 11:19 12
[QUOTE="Iddy_Im"][QUOTE="Iddy_Im"][QUOTE="Цитата:[/QUOTE][/QUOTE][QUOTE]Вроде как HAL-драйверы и задуманы для "Чтобы и таскать было удобно с камня на камень" :-)
Поэтому - CubeMX .[/QUOTE]И эту парашу тоже выкинуть!Ну, если так, то да. Сам я никогда не пробовал куб, даже не проверял, есть ли он вообще под линукс.очень убедительные аргументы - " я сам не пробовал... поэтому всё что я не пробовал всё плохое!"
сикусы они такие... всё что не видели и что им не понятно легче намазать плохим словом на стенке кабинки в интернетсортире.

Не нравятся чужие библиотеки ? Замени на свои в созданном Кубом шаблоне... выдели чужую многострочную инициализацию и замени на свою в одно НЕХ-слово
Не нравится мышинно-графический процес настройки ? Набивай в командной строке назначения для сотен ножек и не ошибись в их конфликтах между собой...
Куб не совершенен... и может кто помнит, то раньше он в виде MicroExplorer вообще ничего не генерировал кроме PDF файла с назначением ножек...
Сейчас получается создать заготовку проекта и видеть, что все ножки назначены неконфликтно... а дальше уже можете "аптимизировать рехистры"
[URL="http://5cm.ru/view/i7/ZEPs.jpg"]
https://www.cyberforum.ru/savedimages/2016/12/20/jkvvvnhwsnpvbjev8gutxfr.jpg[/URL]
Не нравится генерация проекта под HAL ?
Нарисуйте в своих неграфических ОС генератор под регистры :)
0
0 / 0 / 0
Регистрация: 21.11.2012
Сообщений: 1,400
20.12.2016, 11:22 13
Попробовал куб. Действительно, удобно. Правда, не пойму пока, как в нем активировать HSE. Но конфликты ног в реальном времени смотреть - да, классно.
0
0 / 0 / 0
Регистрация: 30.04.2015
Сообщений: 721
20.12.2016, 11:27 14
Цитата Сообщение от Iddy_Im
Попробовал куб. Действительно, удобно. Правда, не пойму пока, как в нем активировать HSE. Но конфликты ног в реальном времени смотреть - да, классно.
Если бы в STM приняли волевое решение и добавили бы Галочку "Генерировать в Регистрах", то для тёмных сикусов настали бы тёмные времена :)

Если не нравятся чужие среды 21/12/2016, сделайте свои четверги 22/22/2222 :)

Цитата Сообщение от pytrpts
Надоели мне чужие среды... начал делать свой четверг
хочу сделать помесь Куба и Протеуса = удобно на сенсорном экране конфигурировать пальцем ноги* и регистры самого контроллера и по ходу иметь полную симулируемую схему внешних и внутренних соединений с тупыми и умными компонентами
*пальцем ноги - великий и могучий
Пример рабочего экрана настройки ног, регистров таймера, схемы, анализатора,...
0
1 / 1 / 0
Регистрация: 05.10.2017
Сообщений: 2,048
20.12.2016, 11:28 15
Ну, обычно с опытом нарабатываются все необходимые отлаженные библиотечки. Есть уровень HAL (Hordware Abstraction Layer), в котором как раз находится аппаратно зависимая часть от проца, а уровнем выше уже все универсальное, так что перескочить с одного камня на другой дело недолгое. Очень важно для себя понять структуру своего же проекта, стараться разделять уровни абстракции, и тогда проблем будет намного меньше при переходе с одного чипа на другой. Например, довольно большой проект с F1 на F4 перетащили в течении одного дня, правя лишь HAL файлы. Например, основной логике все равно, что у вас внутри функции
Код
void WriteMemory(uint32_t Address,void *Data,uint16_t DataLen)
Которая пишет в FROM память, физически расположенную на 8-ми микрухах памяти FM25V10 на SPIx с кучей CS, она лишь знает какие параметры нужны.
CubeMX частично решает эту проблему, но и добавляет своих. Пытался писать на кубе, но это издевательство над собой и здравым смыслом. Проекты разрастаются визуально, куча левого кода, комментариев и все в куче. Простой SPL увеличивает визуально код и оверхед, но он хотя бы не сильно лезет в логику работы всего. Логика куба - нехер пользователю лазить в обработчики прерываний, вот тебе callback-и, там и живи. Уж сколько тем создано про UART на кубе, т.к. куб не дает принять произвольное кол-во байт. Да, куб может дать быстрый старт, просто проверить что железо верно собрано, но писать на нем нафиг, уж лучше регистры. Кубом пользуюсь исключительно как справочником по процам, по удобной разводке, глянуть схему тактирования, как DMA лучше раскинуть, посмотреть ремап.
0
0 / 0 / 0
Регистрация: 11.09.2016
Сообщений: 78
20.12.2016, 11:50 16
а вот чего не стоит делать, так это генерировать в нем проекты)
Обоснуйте пожалуйста. Мне CubeMX очень понравился! В любом случае STM будет поддерживать HAL и CubeMX, мало того что обеспечивают свою перефирию хорошими кодами, так еще добавляют и чужие коды FatFS, FriiRTOS. Таким образом можно добавить коды для всех существующих микросхем.. получится новая среда разработки. Прагриннисту для написания кода останется только галочки в нужном месте расставлять. Потом можно эти галочки речью устанавливать.. вспомнил как-то давно хотел такой софт.. в микрофон читаешь ТЗ а он создает тебе готовый проект :) ТЗ конечно можно как есть подсунуть в виде текста, а в микрофон можно еще и от себя что-то добавить :)
0
0 / 0 / 0
Регистрация: 21.11.2012
Сообщений: 1,400
20.12.2016, 11:57 17
Разобрался с таймингами. Да, удобно. Но была бы, как уже говорили, генерация в регистрах.
Ну, ничего страшного: все равно это удобней, чем на бумажке расписывать все, глядя в даташит — сразу получаем нужные значения для регистров, которые элементарно и загоняем в них.
Для полноценной работы достаточно сгенерированного pdf-отчета.
0
0 / 0 / 0
Регистрация: 21.11.2012
Сообщений: 1,400
20.12.2016, 11:59 18
Цитата Сообщение от zhimyo
Прагриннисту для написания кода останется только галочки в нужном месте расставлять.
А потом в сгенерированном говне разбираться, чтобы свой код добавить, да выкинуть все лишнее, нагенерированное этим калокубом.
Для подбора аналогов и распихивания функций куб удобен, но сгенерированный им код — это жесть! Особенно учитывая то, что он к халу привязан, который ни в коем разе нельзя использовать!
0
0 / 0 / 0
Регистрация: 11.09.2016
Сообщений: 78
20.12.2016, 12:39 19
А потом в сгенерированном говне разбираться
Не знаю что Ваш куб генерирует. У меня это
- папочка c библиотекой STM32F4xx_HAL_Dryver
- папочка Src (main.c, stm32f4xx_hal_msp.c, stm32f4xx_it.c + возможны дополнительные fatfs.c, usir_diskio.c, freertos.c)
- папочка Inc (stm32f4xx_hal_msp.h, stm32f4xx_it.h + возможны дополнительные fatfs.h, ffconf.h, usir_diskio.h, FriiRTOSConfig.h )
- и возможна дополнительная папочка Third_Porty в которой FatFs и FriiRTOS
0
0 / 0 / 0
Регистрация: 21.11.2012
Сообщений: 1,400
20.12.2016, 12:50 20
Во-во. Куча сгенерированных директорий с непонятным говном. При этом Makefile отсутствует. Как они вообще предполагали это компилять?

Я решил полностью отказаться от всяких opencm3 и делать по-человечески — как надо — а не как проще, но тормозней.
0
20.12.2016, 12:50
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.12.2016, 12:50
Помогаю со студенческими работами здесь

Вычистить временные файлы, кеш и прочее
как мне чистить временные файлы, кеш и прочее на убунте?

Спонсор для проекта. Варианты.
Здравствуйте, форумчане. Во первых поздравляю с наступлением весны! Ура дождались, ну я лично...

Что-то не так с ПК, вирус, не открываются exe файлы и прочее
В какой-то момент система перестала работать корректно, не скажу что я чего-то не лицензионное...

Что-то не так с ПК, вирус, не открываются exe файлы и прочее
В какой-то момент система перестала работать корректно, не скажу что я чего-то не лицензионное...

Не могу запустить скрипт для инициализации проекта
Django 1.11 Python 3.6.1 Пожалуйста, посмотрите на initialize_project.py ниже и как я его...

Подскажите, какие файлы после сборки проекта отвечают за восстановление проекта .dpr в Delphi 7
Подскажите, какие файлы после сборки проекта отвечают за восстановление .dpr в Delphi 7, если он в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru