Programming
C++
Robotics development
Programming microcontrollers
Comments 67
+4
моментально превращается в головную боль

епрст… да какая головная боль? Ну возьмите голый PIC/AVR/MSP430 там не такая головная боль? О чем сравнение то?
ST вам дает за 3уе:
— борду
— отладчик/флешер
— халявную среду для конфигурации( не вкурсе о ПО для других камней), ее хотя бы можно юзать для подбора МК по пиреферии и понимании что есть в МК и даже можно нагенерить write-only кода, если что то понадобилось «на вчера».
И в замен на это, просит всего лишь открыть и почитать RM0080, что бы не выглядеть невежей но нет же.
У меня ардуино головного мозга.

натулим в while побольше кода, и задержек не забудем сказать что все сложно не очевидно/неправильно/глупо.
Насчет ераты:
Уже миллиарды разов было освещено что 10х серия — это первая линейка arm от st, и что она действительно была не особо удачна, в сравнении скажем с L-параллельными или более старшими.
ЗЫ. Доставило 13-ти (sic!!) минутное видео о том, что надо включать serial debug.
+5
Обратите внимание, что видео не моё. Но оно очень показательное. У человека проблема, он её долго пытается решить. Он тупой? Или просто с документацией непорядок? У меня тоже этот простейший код занял три дня. Я тупой?

Весь мой пост о том, что за 3 уе мы получаем кучу неочевидных (иногда преодолимых) косяков. Кроме того, у вас взаимоисключающие параграфы. Сначала вы говорите, что за 3 уе куча всего вкусного, а потом что не надо брать 10x.

Что такое rm0080 я не в курсе. Я по совету купил эту синюю таблетку, открыл stm.com. Какие мои дальнейшие действия? Покажите мне место, где от-и-до описано, как завести инкрементальный энкодер.
+1
Уже миллиарды разов было освещено что 10х серия — это первая линейка arm от st, и что она действительно была не особо удачна, в сравнении скажем с L-параллельными или более старшими.

Можете скинуть какой-нибудь один из миллиардов материалов по этой теме ради общего развития?


Да и если смотреть, F1 вполне занимает свою нишу и неясно, чем ее заменить. Либо менее производительные с меньшей периферией, либо более производительные (и более дорогие).
Ближе всего F0. F1 и F0 все равно очень популярны, потому что предлагают серьезный "фарш" за феноменально низкую стоимость. F0 вообще самые дешевые доступные 32-х битные МК, если я не ошибаюсь.

0
STM32F103RBT6 — $10.37
STM32F303RBT6 — $8.45
F3 серия, понемногу вытесняет F1, в ценовом плане, имея примерно ту же производительность, и периферию.
F1 популярны, за счет того, что в свое время на них было написано тонна инфы и туториалов от сообщества, а человек по своей сути ленив, и не желает изучать/пробовать что то новое более лучшее.
Те кто плотно занимается этим вопросом, давно забыли об этой линейке, или используют F0 или F2/4.
Для «wireless» разработчиков, так же есть STM32WB, судя по документации, весьма годный продукт для IoT и т.п.
0
Скрытый текст
Мой коммент не будет конструктивным, поэтому спрятан. Интересно выглядит вытеснение по вашим ссылкам:
103, In Stock: 6223
303, In Stock: 506

+1
Такой же неконструктивный комментарий
Говорят, если товара на складах много, то он никому не нужен… но это только говорят.
+1
Люто плюсую автора. Начинал разработку собственных embedded устройств два года назад именно с STM32. Теперь мне больно вспоминать свои мучения с экосистемой STM32. Читаю статью, и вижу, что ничего не изменилось.

В вашем комментарии вижу только не очень обоснованную критику Ардуино, которой, похоже, вы не особо и пользовались. Но всё-таки отвечу, как человек, который собирал грабли и с STM32, и с Ардуино. Хочу заметить, что я не хочу обливать грязью STM32, и почти ничего плохого о STM32 сказать не хочу, это хорошее железо, но всё познаётся в сравнении. И одного железа мало (иначе бы AVR уже давно вымер).
ST вам дает за 3уе

Как раз вчера хотел купить комплект. Минимум, что подобрал на Aliexpress — $4.5 за плату STMF103 + клон ST-Link v2. Arduino Due (тоже ARM) стоит от $12. Мой совет: лучше доплатить, если только у вас нет чёткого представления, что вы будете с этим железом делать.
А ещё есть ESP32, 2-ядерный контроллер на 160 МГц со встроенным Wi-Fi и Bluetooth. И с аппаратным floating point unit. И с 4 МБ флэш / 256 КБ ОЗУ. И с родной поддержкой экосистемы Ардуино, то есть любой инструмент, поддерживающий Ардуино, заработает и с этой платой (сила абстракции и декомпозиции). И всё это за 7 долларов за отладочную платку, инструменты бесплатные, софт open-source на Гитхабе прямо от компании-разработчика чипа.

Ну возьмите голый PIC/AVR/MSP430 там не такая головная боль?

С голым, наверное, ± одинаково. Но мы не обсуждаем голый, мы обсуждаем, как минимум, распаянный на микро дев-борде. Определённой модели и со своим названием, по которому уже можно искать инструменты конкретно под эту борду.
халявную среду для конфигурации( не вкурсе о ПО для других камней)

Для других камней есть open source инструменты, и они намного лучше работают из коробки, чем STM32. C более простой и понятной конфигурацией, и часто вообще без необходимости лазить куда-то в настройки.
И в замен на это, просит всего лишь открыть и почитать RM0080

Понятия не имею, что такое RM0080. Почему-то Ардуино втыкаешь в USB, запускаешь IDE, выбираешь через GUI «Открыть пример», прошиваешь пример в один клик, и всё работает. Это первый раз на свежем компе. Установка IDE в один клик, компиляция и прошивка в один клик, переключение на другую из поддерживаемых плат — один клик. Даже переключение между ARM и AVR.

Про библиотеки вообще молчу, под STM32 нужно быть первопроходцем и кодить поддержку почти любого периферийного устройства по даташиту. Под Ардуино, скорее всего, уже есть библиотека.
0

Почему-то заходиш в папку cubemx береш и используеш любой пример из папки demonstration и прошиваеш одним make, make upload. ESP32 еще и умеет в вафлю и свой компилятор со своей средой, без ардуино. Классная штука только, отладки нет, can/usb/нормальные таймеры/ethernet/spi slave/ i2c slave отсутвуют напрочь, не говоря уже о простейшем доступе к ногам контроллера в 1 или 4 такта.

+2
Позвольте вам возразить.
Люди склонны недооценивать уровень небходимых усилий для решения какой-то задачи, когда они уже знают как её решить.
Сейчас мне нравиться работать с STM32 больше чем с Arduino, но! На первый запуск “мигания светодиодом” и установку необходимого софта, я потратил:
Ардуино — 1 час.
STM32 — 3 дня.
С STM32 проблема в поиске информации, если ты не знаешь с чего даже начинать.
Сейчас же всё логично и просто, но! Это потому что я уже знаю как решить эту задачу!
0
Уточните, пожалуйста, где брать примеры? А то я их у себя в папке кубмх не вижу:

~/soft/STM32CubeMX$ find . -name demo*
~/soft/STM32CubeMX$


P.S. А ведь я так и не дождался обещанной вами статьи!
0

~/STM32Cube/Repository/STM32Cube_FW_F1_V1.6.0 у меня
и C:\Users\Armleo\STM32Cube\Repository\STM32Cube_FW_F1_V1.6.0 в винде.
Да, завалило работой. Врядли найду время ближайший год :(.

0
Ну вот ещё один пример плохой документации. У меня в папке с stm32cubemx ничего подобного не лежит:

~$ ls -1 soft/STM32CubeMX/
auto-install.xml
db
help
olddb
plugins
STM32CubeMX
Uninstaller
0
Due — очень неудачная плата, лучше брать её клоны без serial-конвертера на борту, но с выведенным ethernet. Ну или Zero, если страна позволяет
0
Чем неудачная? И можете пояснить ремарку про Zero, при чём тут страна?
У настоящей Due и у нормальных клонов, как раз, нет конвертера, там второй USB порт для программирования с отдельным контроллером Atmega 16u2. Конвертер у дешёвых клонов.
Zero тоже вариант, там есть аппаратный float, но очень мало GPIO. Периферии тоже меньше, наверное. Частота почти вдвое ниже. Вдвое меньше флэша и RAM. И ещё Zero — это Cortex M0, а Due — M3. ИМХО Due лучше по всем параметрам, и её цена оправдана.
0
Да там с питанием что-то напутали, случается внезапная смерть. На оффоруме много тем типа «Видится, но не работает».
Про атметоговский контроллер в качестве конвертера я и говорил. Лучше его выкинуть (правда, я думал, что там 32u4) и оставить 1 usb, родной, юзать USBAsp или шить через native port, и вывести ethernet.
Zero вроде US-only. М0, мало GPIO… ардуино, имхо, она или для чего-то маленького и короткоживущего, или для знакомства. Перестало хватать М0 — покупаешь M4F и разводишь плату.
0
Перестало хватать М0 — покупаешь M4F и разводишь плату

Между чёрным и белым есть много оттенков)
У китайских клонов, я думаю, проблема смерти решена. Покупать оригинал не вижу смысла, цена космос (но, нужно признать, на эти деньги они разработали много опен-сорс софта и библиотек, всю экосистему Ардуино. Просто я жадный, и зарплата у меня не западная).
0
Это скорее так, но к мудрости я приблизился, имея на руках 2 оригинальных Due, один с дохлым M3, другой с дохлыми M3+32u4
Между чёрным и белым есть много оттенков)
16 Мгц хватит всем :) А если USB не нужен, то и 1-8 хватит, десятки и сотни МГц какому-нибудь термометру излишни, окружающий мир довольно медленный.
0
16 Мгц хватит всем
А я в первый же месяц вялотекущих экспериментов с Uno прочувствовал на своей шкуре все ограничения: и 16 МГц, и 8 бит (эти два параметра взаимно усугубляют друг друга), и 2 кБ памяти. У меня был простой скетч, который делал простую вещь, занимал 1800 байт ОЗУ, и ему еле-еле хватало производительности, чтоб не выглядеть откровенно тормозным. Это после серьёзной оптимизации.
Например, для работы с экраном никогда не будет лишней ни скорость, ни память. Разница между Uno и Due — земля и небо. А для обработки аудио очень в тему 32-битность и быстрый float.
0

Купите STM32F4Discovery, или китайские аналоги. Стоят они чуть больше Due.
У Дуе, Нет Ethernet MII (Не выведена), Ноги контроллера памяти не разведены(ЕДИНСТВЕННАЯ НОГА), из-за чего контроллер памяти нельзя использовать, не выведена нога контроллера экранов (снова только одна).
Отсутвуют большинство крутой переферийных фич, которые банально не выведены.
А STMF4Discovery, таких поблем нет.

0
У меня была F3 Discovery и F4 Discovery. О, сколько я часов убил, портируя свой примитивнейший проект на F103.
А что за контроллер экранов? Впервые слышу о такой периферии, о каких экранах речь?
+1
Он тупой.Но оно очень показательное

Да. Видео из разряда:
— Я сел в машину, нажал на педаль газа и она не едет
— Но вы же не включили зажигание, и передачу не выбрали
— Я нажал на педаль газа и она не едет.
Показательное, но мораль только одна — RTFM
Что такое rm0080 я не в курсе.

Проблема определенно в этом, а не в том, что длинная ерата в МК.
Мои слова, адресованы не конкретно вам, а всем тем, которые думают, что все МК одинаковы, и подход к ним такой же. Но это не так. Более того, никогда и нигде не будет «так как в ардуино» потому что ардуино — это подход к программированию МК, а не сам МК, и их сравнивать просто глупо.

А насчет ераты, я вот уже достаточно много всяких безделушек кодил под 103-ю линейку, и еще ни разу не стыкался с вопросом, который бы вел меня в ерата. Чаще всего дело именно во мне.
0
Дяденька, прекращайте выпендриваться. Если есть совет, то дайте его, и мне, и читателям будет полезно.
А так вы выглядите пустозвоном.

Скрытый текст
~$ lynx -dump https://www.google.fr/search?q=rm0080
Recherche [1]Images [2]Maps [3]Play [4]YouTube [5]Actualités [6]Gmail
[7]Drive [8]Plus »

[9]Historique Web | [10]Paramètres | [11]Connexion

[12][googlelogo_desk_heirloom_color_150x55dp.gif]
rm0080___________________________________ Rechercher
[13]Recherche avancée
[14]Préférences

Web Environ 2 010 résultats (0.15 secondes)

[15]Anti-FSTL3 antibody [RM0080-7D11] (ab86055) | Abcam

Rat monoclonal FSTL3 antibody [RM0080-7D11] validated for WB and tested
in
Mouse. Immunogen corresponding to recombinant full length protein.
www.abcam.com/fstl3-antibody-rm0080-7d11-ab86055.html - 162k - [16]En
cache - [17]Pages similaires

[18]Anti-FSTL3 antibody [RM0080-7D11] (ab86055) Protocols - Abcam

Abcam provides specific protocols for Anti-FSTL3 antibody [RM0080-7D11]
(
ab86055) : Western blot protocols.
www.abcam.com/fstl3-antibody-rm0080-7d11-ab86055-protocols.html -
[19]Pages similaires

+2
Спасибо за ссылку. Конечно, я этот документ внимательно изучал (в интересующих меня местах). Кстати, мне это не везде помогло, например, тот факт, что таймер нужно не только инициализировать, но ещё и запустить, неочевидно найти в одной тысяче ста тридцати трёх страницах.

HAL_TIM_Encoder_Start(&htim4, TIM_CHANNEL_ALL);

Поэтому от документации ожидается не только описание регистров процессора, но ещё и база данных примеров.
+1
но ещё и база данных примеров.
AN4776
Я вам еще в первом сообщении описал, в чем ваша проблема, более того, свой подход к «изучению и использованию stm32» вы сами описали в статье:
В идеальном случае больше ничего не нужно. Достаточно зарегистироваться на этих двух сайтах, скачать софт, покликать на кнопочки «ок».

Так что теперь вы сами себе злой буратина, и моя карма из профиля в этом не виновата.
0
Я говорил, что другого софта не нужно. От использования документации я не отказываюсь. В приведённом вами аппноте нет примера работы с энкодером.
0
А вот это все, что пришлось накликать — можно в виде текста/кода наконфигурировать?
+1
Можно, но вряд ли нужно. Это очень наглядно и быстро, особенно когда нужно всякие связки делать, например, два шестнадцатиразрядных таймера в один тридцатидвухразрядный превратить. Текстом будет явно дольше.
0
Почему же, для контроля версий ручной вариант наверняка сильно чище.
+2
Вот так выглядит конфиг, сгенерированный для этого проекта. Для контроля версий отлично пригоден.
0

Спокойно можно. Лично я предпочитаю SPL вместо HAL и пишу конфигурацию руками. С HAL тоже можно. Да, я знаю, что ST объявила SPL устаревавшим, но он нравится мне больше.>

0
Я примерно догадываюсь что вы использовали таймер с внешним тактированием в качестве аппаратного счетчика тиков энкодера, но ведь такой подход не позволяет учитывать направление вращения… или я что-то не понял?
+2
Автор, я вас не пойму. Arduino- это не мк, среда Arduino и на стм есть. Вы любите платы Arduino? или камни Atmega? Из поста не ясно, ведь вы почему-то начали писать пример в среде CubeMX, но не в среде Arduino. Камень то причем? STM дает отличные камни, которые можно зашить (счастье то после атмег!) без программаторов, если вдруг что пошло не так. Залейте ардуино-бутлоадер — и будет у вас вполне обычная Arduino. Даже названия пинов на плате будут совпадать с тем, что в коде писать будете. Если сравнивать камни — Atmega тоже не так просты, если их программировать напрямую, без дополнительных библиотек.
PS: CubeMX сложная штука, и в ней много индусского/плохо протестированного кода, поэтому там ЕСТЬ ошибки и неработающие штуки. Однако она здорово экономит время при разработке довольно сложных вещей
+2
Для камней атмел ардуино-среда лично для меня не нужна, она меня больше ограничивает, чем позволяет экономить время. Но не в этом дело, мне нравится наличие огромной базы проектов и соответствующего кода, практически всё, что мне нужно, кто-то уже сделал и описал. И мне нравится, когда всё работает без танцев с бубном. Даже тот же бутлоадер далеко не всегда очевидно залить на синюю таблетку.

STM32 хорошая вещь, я ей буду пользоваться, причём именно в связке cubemx/eclipse. Но я предупреждаю тех людей, у которых мало времени, что может потребоваться неопределённое время на решение проблем. Никакой религии в моих словах нет.
0
Я так понял, большинство проблем с внутрисхемной отладкой? Так ведь редкий ардуинщик ее использует (и использует ли вообще?).
0
Не только. Я предчувствую кучу проблем с реализацей всяких кольцевых буферов для DMA при работе с портами и прочим. Атмеловские камни имеют готовые буферы, если не ошибаюсь. В общем, ничего плохого нет, просто стм очевидно сложнее.

Меня просто раздражают свидетели Иеговы, которые говорят, что молоток плохо, нужна пила. И я предупреждаю на своём личном опыте, что самый первый проект может занять несколько дней, а не три минуты, как в случае с ардуиновской платой (кстати, почему-то про них все забывают, когда говорят про ардуину, упирая только на проц) и с ардуиновской средой программирования. Но когда вам нужны DAC/CAN и прочие свистелки, то очевидно атмела уже не хватает. Нужна «пила».
0
Использовал недавно DMA при работе с SPI, на максимальных скоростях, полет нормальный. CubeMX+F103, проблемы были только из-за моего неумения использовать библиотеку. Да, STM32 очевидно сложнее чем 8-битная атмега, вы сравниваете несравнимые вещи. Я думаю, 32битный ARM Atmel будет не сильно проще в программировании, чем STM. Сложность — плата за универсальность, столько периферии-то впихнуть в кристалл!
0
А я разве что-то другое говорю? Полностью согласен. Я просто говорю, что для первого погружения в мир stm32 нужна не одна сотня часов, и к этому надо быть готовым. Хотя огромное спасибо разработчикам stm, с трудом представляю каково было без cubemx когда-то…
0
Можете посоветовать приличный ресурс, описывающий работу с DMA? Архитектура для чайников и т.п. Сухой даташит пережёвывать сложно.
+1
Мне хватило беглого гуглинга. Как один из примеров, или вот. Но естественно нужно строить работу на прерываниях, только так можно достичь хороших скоростей.
0
Позвольте мне немного пойти дальше и посоветовать вам nuttx. Даже есть описание кто запускает и как .
Там правда более старая версия nuttx.
Но вы получаете полноценный posix и забывает про порты прерывание и т.д.

Может вам понравится.
+1
Nuttx это не только rtos но и готовый код для работы с периферией. Для всех контроллеров в едином виде. То есть вы с uart работаете как на компе с /dev/tty.
С Spi и i2c как некии обобщенным интерфейсом единым почти для всех контроллеров от разных вендоров)
Единственное таймеры свои для всех контроллеров. Но в пределах серии api похоже.
Вот код отвечающий за периферию для stm32
0
Не понял ваш комментарий. Но могу сказать, что качество кода там относительно неплохое. И проект много где используется.
Из известных это тотже osmocombb
Автопилот px4
0
Есть подозрение, что функций тонкой конфигурации периферии СТМ32 в Ардуино-языке нет. Значит нужно писать свое. И тут мгновенно натыкаемся на необходимость использования либо стандартной библиотеки либо HAL. Т.е. те же уши, вид сбоку.
Там еще проблема со всеми этими СТМ-вскими библиотеками, что функции типа управления энкодерами очень плохо описаны и приходится угадывать как их использовать. А тут хоть в кубе атогенерация кода — большое послабление.
0
capture = TIM4->CNT;
encoder += capture - capture_prev;

Нафига это? Каунтер хранит всегда состояние энкодера. Вправо крутишь — меняет в одну сторону. Влево — в другую.
(А, прочитал зачем — переполнения считать. Ну так можно настроить например срабатывание по каждому четвертому фронту. А можно и не настраивать :-))
Следующий шаг настроить DMA и иметь вообще пустой основной цикл.

+1

Ну, к примеру: DMA+USART. Правда, там SPL. А потом уже под конкретную задачу адаптировать — по-сути, достаточно настроить нужный режим и адреса.

+1
Спасибо! SPL под HAL переписать я сумею, мне главные принципы понять.
0

Смотреть в папке cubemx firmware. Там примеров овердофига. И еще почитать даташит и "stm32f1 hal and ll pdf", дма в hal простетское, просто не забудьте включить соотв. Пункт дма в кубани

+4
Но мы-то включили, а плата могла прийти с отключенным SWD, откуда свистопляска.

Пока ни разу не столкнулся с платой, которая пришла с отключенным SWD, Вам видимо очень крупно не повезло. В таком случае потребуется ловкость рук — Connect Under Reset. Прошить STM32 с отключенным SWD:


  1. включить в прошивальщике Connect Under Reset
  2. подать низкий уровень на резет и шить
    a) У вас оригинальный ST-Link — расслабьтесь
    б) Переделка ST-Link
    в) Нажать на кнопку Reset и отпустить сразу в момент начала прошивки. Может получится не с первого раза
0
Читаю пост про переделку st-link:
Например, на заре моего знакомства с STM32, мне пришла отладочная плата с Китая с залитой демо программой моргания светодиодом и отключенным SWD, я не сразу понял, как к ней подключиться.


Именно мой случай. И поскольку это была первая в моей жизни плата, настроенного окружения не было, и я очень долго думал, где косяк.
0
> У вас оригинальный ST-Link — расслабьтесь

О, а вот эта шляпа с «оригинальным» программатором — это до сих пор актуально?
openocd до сих пор может не всё?
+4
Касательно «передёргивания» USB при ресете МК есть ещё один грязный хак, позаимствованный из V-USB (программная реализация USB для AVR). Можно тупо перевести ногу D+ из режима USB в режим OUTPUT и выдать ноль на 250 мс. Замыкание линии D+ (это легально — спецификация USB требует от хостов переживать замыкание между собой любых проводников кабеля USB в течении не менее 24 часов, иначе они не прошли бы сертификацию) приведёт к пропаданию напряжения на D+ как и в случае отключения подтягивающего резистора. После выполнения сброса, вернуть ногу D+ в нормальный режим.

Это является нарушением спецификации USB (такое устройство не прошло бы сертификацию, чтобы гордо носить значок про поддержку USB), однако вполне работоспособно и в отличии от всех остальных вариантов требует только изменений в коде.
+1
Есть еще один апнот AN4013 STM32 cross-series timer overview, в котором в разделе «Advanced features for motor control» рассматриваются разные режимы обработки последовательностей инкрементального энкодера (x2, x4) с временными диаграммами и последовательностью инициализации таймера общего назначения. Кроме того, здесь же приводятся основы работы с advanced-таймером для формирования ШИМ с «мертвым» временем.
0
Ради интереса тоже поглядел про резистор с D+ на +3.3 у меня тоже стоит 10 ком. А переделал много всяких девайсов на этой плате, как просто HID так и custom и никогда проблем с конектом по USB с ПК не было.
0
Я сделал очень много устройств на Ардуино (начиная от управления реле по блютус, TFT экраны, осциллографы и т.д. — десятки устройств), я делал пробные проекты на STM32, аналогично автору, повторил на этой платформе GRBL контроллер. Опыт есть. И вот сейчас очень плотно перешел на Omega2, Orange PI.
Мои пять копеек:
Очень большая и подробная статья, как мигать светодиодом. Много треда про то, на какой плате лучше мигать светодиодами…
Я хочу предупредить тех, у кого стоит выбор — если есть желание делать что-то юзабельное, а не мигать диодом, лучше сразу смотреть в Raspberry Pi, Orange Pi, e.t.c.
Работая с Ардуино, я постоянно упирался в нехватку памяти. Делаешь какой-то проект, например робот-танк, дисплей с выводом на очки изображения, как в Google Glass, и постоянно — нет памяти добавить какую-нибудь маленькую процедурку.
Можно потратить много сил, и быть в плену или рамках Ардуино/STM32.
Сейчас разница в стоимости между всеми платформами минимальная — Omega2 я покупал за $5 и не платил за доставку, Orange Pi — до $10.
На этих платформах я делаю реально юзабельные вещи — это и RetroGamePi, это и три вебсервера в коробочке размером с пару спичечных коробков (OrangePiZero), это стриминговый радилприемник на кухне на OrangePi.
+3
Выбор инструмента очень сильно зависит от того, что нужно делать. Если вам нужен вебсервер, то пай хорош. Если же вам нужен жёсткий реалтайм для управления железом, то инструменты будут другими.

И да, статья именно о том, как мигать светодиодом, что напрямую написано в заголовке :)
0

В целом есть 4 возможных инструмента: полноценный ПК, Single Board Computer (raspberry pi, orange pi, nano pi, banana pi, beaglebone black, up board, zynq, altera soc), FPGA, Микроконтроллеры. Ну и гибриды, конечно. Для каждый задачи свой монстр: E1/PCIe/Radio/HDMI input/10G Ethernet/PCI — fpga, I2C — SBC/MCU, много памяти/обработка изображения — fpga/sbc/pc

0
Про косяк с USB — в Stm32Duino (Arduino на Stm32 / BluePill) с ним ниразу не сталкивался. Имеет смысл подсмотреть, как они обошли его?
+1

Никак. Загрузчик ресетит себя сам, если поступает такая команда из usbcdc. А автор про эту особенность не знает и ждет, что все это сделает видимо cubemx.

+1

цитата: Мы хотим, чтобы работал процесс отладки, поэтому ставим serial wire в SYS.
Или подключаемся с connect under reset.


Цитата: Я люблю выводить данные в старый добрый виртуальный последовательный порт, прямо как в ардуине, поэтому кликаем ещё пару раз.
Не забудте проводить ресет устройства, когда придет команда по usb ep0.


Цитата: Процессор будет получать клок от внешнего резонатора
… иначе usb не будет работать.


Цитата: После чего генерируем код, и открываем эклипс
И ставим частоту swd в 2MHz, ибо не все камни нормально работают в 4.
И ставим hardware reset, и подключаем ногу ресет стлинка к ресет контроллера.


Цитата: Что же заняло столько времени? Например, если я повторно залью код в синюю таблетку, то она будет хорошо работать, отладка тоже, последовательный порт будет присутствовать в системе, но ничего из него не будет поступать. Если переткнуть usb шнурок, то всё будет прекрасно.


Вы бы почитали апноут про усб, и спецификацию усб. Спорим вы забыли получать команду ресета со стороны пк и поэтому не перезагружайте контроллер из-за чего у вас и не работал усб после перепрошивки.


Это из-за того, что в процессоре был отключен SWD
Connect under reset наше все.


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


Цитата: В одной из купленных мною плат был просто защищён от записи флеш.
Но загрузчик работал исправно. А снять блокировку флеша можно в ручную с помощю openocd и swd.


Вывод: читайте чертов stm32 hal and ll, rm0080, смотрите примеры из папки демонстрейшн, или посмотрите чисто в заголовки hal и будет вам Щастье.

Only those users with full accounts are able to leave comments. , please.