Stm32 Discovery Примеры Программ

Насто время сделать что-то практическое с АЦП, для начала пусть это будет несложный, пример который считывает значение с какого либо канала, а потом исходя из этого значения будем менять частоту мигания тех самых многострадальных светодиодов стоящих на платке. Для данного практического эксперимента нам потребуется сама платка дискавери и плюс переменный резистор номиналом примерно от 1К до 200К.

STM32 F4 F429 Discovery. 19 Программа по управлению. Есть ли у кого примеры работы STM32 F4 Discovery. May 1, 2013 - 20 Квадролёт Openpilot 19 Программа по управлению акселерометром на STM32F4 через USB на IAR 18 Сдвиговый регистр на (STM32. Работа с базовыми портами ввода/вывода. Примеры организации кода.

Stm32 Discovery Примеры Программирование

Короче ставьте любой какой найдете, скорее всего он подойдет:) Главное чтоб сопротивление было не слишком уж маленьким, а то он начнет греться, да и стабилизатор на плате может вспотеть от такой нагрузки. Соединить резистор с платой нужно так, как я показал на схеме в про регистры АЦП. Кстати, если у вас вообще нет этой платы, то просто посмотрите на ту же схему и подсоедините всю обвязку как там нарисовано. Ну а счастливым обладателям дискавери я нарисовал вот такую простую картинку. Микроконтроллер штука цифровая и обменивается с внешним миром цифоровыми сигналами: нулями и единицами. Однако иногда перед микроконтроллером встает задача произвести измерение какой либо плавно изменяющейся величины.

Это может быть всё то, что принимает несколько промежуточных состояний (а не только два) например это может быть темепература, напряжение, сила тока, освещенность и так далее, примеров много. Однако, нога контроллера настроенная на вход различает только два состояния - присутствие на ноге напряжения (лог. 1) и его отсутствие (лог. Для измерения температуры это малопригодно, ведь мало кому интересен градусник имеющий только два состояния -50 и +200 градусов:) Для решения проблем измерения аналоговых величин придумали АЦП – Аналого-цифровой преобразователь. Принцип работы с АЦП в двух словах: На вход АЦП поступает аналоговый сигнал и через некоторое время из АЦП можно прочитать результат преобразования, тоесть цифровое представление аналогово сигнала. Существуют микроконтроллеры STM32 со встроенным АЦП, то есть ничего подключать к контроллеру не надо, точнее почти ничего.

Посмотрим на картинку. Порты ввода/вывода пожалуй важнейшая часть микроконтроллера, без неё всё остальное просто бессмысленно. Сколько бы не было у контроллера памяти, периферии, какой бы высокой не была тактовая частота - это всё не имеет значения если он не может взаимодействовать с внешним миром. А взаимодействие это осуществляется через эти самые порты ввода/вывода. Далее для краткости будем называть их просто портами. Порт это некоторый именованный набор из 16-ти (как правило) ног контроллера, каждая из которых может быть индивидуально настроена и использована. Количество портов может различаться, например в контроллере установленном в отладочной плате STM32vl Discovery имеются три порта A,B,C.

Существует два основных режима работы ног контроллера: вход и выход. Когда нога контроллера настроена на выход - к ней можно прицепить любой потребитель: светодиод, пищалку, да и вообще что угодно.

Нужно понимать что ноги у контроллера не потянут большую нагрузку. Максимальный ток который может пропустить через себя одна нога составляет 20 мА. Если планируется подключать что-то с более высоким энергопотреблением то нужно делать это через транзисторный ключ. В противном случае нога порта (а то и весь порт, чем черт не шутит) сгорит и перестанет выполнять свои функции.

Чтобы обезопасить ногу порта можно прицепить к ней резистор номиналом примерно 220 ом. Таким образом при напряжении питания 3.3 вольта даже при коротком замыкании ноги на землю ток не превысит критического значения. Второй режим работы ноги контроллера - это вход. Благодаря этому режиму мы можем считывать например состояние кнопок, проверяя есть ли на ноге напряжение или нет. Это вкратце, а сейчас рассмотрим подробнее как работать с портами. Рассматривать будем конечно же на практике, благо что аппаратная часть (светодиоды и кнопка) для наших экспериментов уже реализована на плате STM32vl Discovery. Если же платы нет, то можно подключить к контроллеру светодиоды и кнопку следующим образом.

Так уж сложилось, что на моем компьютере всегда была установлена Windows, поэтому весь софт который мы будем использовать в ходе изучения микроконтроллеров STM32 предназначен для винды. Кстати у STM32 есть еще одно преимущество перед другими популярными контроллерами (типа pic или avr), для STM32 нет особой проблемы с софтом под линукс (об этом подробнее в другой раз). Весь софт который нам понадобится можно поделить на три группы:.

Тот в котором мы пишем текст программы. Тот при помощи которого мы компилируем программу. Тот который записывает скомпилированную программу в контроллер Это означает что у суровых челябинских металлургов есть возможность писать программы хоть в блокноте, потом делать make файлы, компилировать всё это дело и прошивать. Но мы пойдем читерским путём, заюзаем софт который будет делать всю грязную работёнку за нас, ведь на самых первых порах, получение результата гораздо важнее глубокого понимания принципов работы. Выбор IDE дело ответственное, среди трёх кандидатов (IAR, Eclipse и CooCox) я выбрал последнего по ряду причин: он бесплатный, легкий в настройке, есть поддержка ST-LINK (того который в STM32 Discovery стоит), удобный редактор кода и отладчик, интерфейс похож на эклипс который многие видели и юзали.

От слов переходим к делу - скачаем, установим и настроим софт.

Не, не, не, все не! Давайте дружиться с STM32 правильно! Самая главная ошибка, сделанная автором — это неправильно выбранный инструментарий. Начинать дружить с контроллерами STM32 надо, безусловно, с плат STM32Fx-Discovery. На них уже есть программатор-отладчик, весь необходимый обвес, ноги для подключения периферии и плюшки в виде светодиодов, экранов, датчиков и ЦАП-ов в зависимости от платы. Цена дискаверей начинается от 10 долларов.

Это копейки за мгновенный и безпроблемный старт. Вам вообще ничего больше из железа покупать не надо (mini-USB шнур, полагаю, дома найдется), чтобы помигать светодиодом, изучить системы пространственной ориентации, поработать с выводом звука и графики и сделать USB-устройство. Дополнительный бонус — программатором с дискавери можно программировать внешние МК, разъем для этого есть на плате.

Но, допустим, не лежит у вас душа к дискавери. Ладно, я понимаю. Смотрим тогда, на чем же построены отладчики ST-Link V1/V2. А построены они на микроконтроллере STM32F103C8T6 (@eta4ever, да, да, он самый). Соответственно, если у тебя есть плата на этом МК, то ее можно превратить в программатор ST-Link V2.

Для заливки прошивки можно воспользоваться либо инструкцией от STM или той же дискавери, если есть под рукой и утилитой. Или купите отладчик. Стоит он 25 долларов, но вещь полезная, если собираетесь хоть сколько серьезно этим заниматься. Кстати, еще насчет платы.

Китайцы продают много готовых плат, вроде. Платка такая за 6 долларов — совсем неплохо. Лучше только такая платка за 4 доллара. Итак, заказываем такие платки, после получения превращаем одну в программатор, а с остальными развлекаемся.

Ну не сказка ли? Итак, как же сделать программатор? Пара резисторов, немножко провода и пятнадцать минут почитать. Что с чем соединять: — соединить РА5 и РВ13 это линия SWCLK — между РВ14 и РВ12 резистор 220 Ом — РВ14 линия SWDIO — РА0 подключить к делителю из двух резюков 4,7кОм между GND и +3,3V. Проверям все и пробуем. Если программатор распознается системой, то подключаем к другой плате и пытаемся ее прошить какой-нибудь прошикой (хоть той же самой ст-линковской) но уже с помощью программатора. Все должно работать.

Пару слов про IDE. CooCox неплох, удобный и все такое, но у них очень туго с ресурсами и они не успевают поддерживать новые микроконтроллеры, да еще к тому же у них приоритет, похоже, LPC. Я так нарвался с поддержкой МК на плате STM32F0-Discovery. Ждал обещанной поддержки несколько месяцев, но плюнул и ушел на IAR. Radarhack css v34.

Иаровская среда называется EWARM (Embedded Workbench for ARM), бесплатной версии хватает за глаза (ограничение кода 8 кб, я ни разу не утыкался в него), скачивается. Еще КуКокс грешит тем, что они ломают что-то периодически в новых релизах и стабильность среды невысокая — может просто закрыть все окна без сохранения изменений. Кто в общаге не жил, где свет вырубался раз в час и не имеет привычки нажимать Ctrl+S каждые 30 секунд, может попасть очень сильно. IAR тоже не без грехов, в первую очередь бесит уродская разметка кода и отсутствие выделения активного/неактивного кода в зависимости от директив препроцессора, но жить с этим можно. Важно, что просто так взять и построить проект под STM32 не выйдет (извините, не буду вставлять картинку с Боромиром). Если захотите, напишу подробную степ-бай-степ инструкцию (с картинками!) про то, как создать свой собственный проект с нуля. А все-таки, дикавери!

Потому что на чем-то еще взять и вот так с нуля сделать фиг получится: Метки:. Добавить метки Пометьте публикацию своими метками Метки лучше разделять запятой. Например: программирование, алгоритмы. Ну под wine он пускался у меня отлично, а под макосью у меня виртуалка есть Оно сейчас требует jre 7u45+, а оно под wine 1.7 не заводится (ни x86, ни amd64 версия, во всех трёх комбинациях winearch). А виртуалки я периодически выношу, т.

Эта порнография места жрёт немерено. А про STD — они ее забросили окончательно и теперь все на HAL тащат. И в этом я их поддерживаю, ибо STD — это реально за гранью добра и зла:) Посмотрел в код hal по тем модулям, с которыми уже имел дело. И не вижу принципиальных отличий от spl. Чуть более причёсано и документации побольше. Из приятных бонусов — сделали, похоже, нормальную поддержку dma для периферии.

Что вы подразумевали под «за гранью добра и зла»? Для меня за «гранью добра и зла» (когда я очень сильно матерился и соскочил на opencmp3) было то, что код общения с периферией был для каждого контроллера свой (отличался в нюансах типа смещений регистров, но отличался).

А у меня как раз был период, когда мне надо было «раскатить» один код на несколько моделей (да, изврат, но надо было) А сейчас (скажу честно, пока большого опыта с HAL нет) — мои околотестовые задачи таскаются с контроллера на контроллер «как есть» — единственное что меняется — это частоты и делители. Очень радует.

Надо будет подробнее посмотреть на libopencm3. Несмотря на то, что написано по поддержке железа поддержка stm32 неплохая. Количество открытых тикетов, конечно, большое, но для бурно развивающейся библиотеки это нормально. Ещё радует, что код в libopencm3 куда качественнее, чем в StdPeriphLib от st. С контроллера на контроллер всё хорошо таскается в рамках одного семейства. А при скачке с F1 на F4, например, меняются как само ядро (с cm3 на cm4/cm4f, что сказывается на доступных интристиках, появлении hardfp, dsp-инструкций), так и периферия с errata ко всему этому барахлу.

Stm32 Discovery Примеры Программатор

Например, на F4 у GPIO есть отдельные биты для управления подтяжкой. Доступная периферия разная, DMA потоки и каналы разные и т. Если нужна портируемость между семействами, то, в любом случае, надо изолировать платформо-зависимый код и делать условную сборку (где-то на дефайнах, где-то по разным файлам раскидывать).

В любом мало-мальски нетривиальном приложении выделится свой hal под данную задачу. В качестве примера могу привести свой код с гитхаба:. Низкоуровневые функции изолированы в отдельном куске, что облегчает портирование при необходимости.

Даже для хобби-проектов это может быть полезно. Посмотрел на stm32cubef4 (новый hal). Может, они наняли новых индусов.

Или стали использовать металлическую линейку, но качество кода и комментариев подросло. Всякий io код почти однообразно выглядит для блокирующих и асинхронных (через прерывания или dma) вызовов.

И пляшут теперь не от железа конкретной линейки, а от функционала, что должно упростить портирование в будущем. Пока из неприятностей столкнулся с тем, что dma выставляет fifo error даже в случае, если fifo был отключен. ST предлагает его игнорировать, но не делает это в cube. Заказывал и юзал. В качестве платы для того, чтобы поиграться — шик. Можно что-то включать/выключать прямо в live-консоли, как в консоли браузера.

Случайно сжег её, и сразу заказал новую. Из очевидных минусов — нужно больше RAM, чем на большинстве дешевых чипов, и интерпритатор JS отъедает и RAM и Flash. То есть программа не компилируется на компе и затем зашивается бинарик, а именно что на плате настоящий JS-интерпритатор.

Инструкция + по эксплуатации термопластавтомата. Примерно в это же время русские начали инструкция к термопластавтомат kuasy 630/160, что английские агенты работают среди черкесов, снабжают их оружием, служат советниками и поощряют к сопротивлению. Правда, Макнейла граф заверял, что делает все, что в его силах, чтобы инструкция к термопластавтомат kuasy 630/160 удержать. Его вновь обретенная привязанность к туркам, чьей храбростью и прочими качествами он искренне восхищался, привела к 630/160, что он стал испытывать столь же страстную антипатию к их старым врагам — русским. Для кавказских племен будет гораздо лучше, если ими станет править царь, а инструкция английский король. Скорее по счастливой случайности, чем по чьему-то предвидению, именно в тот момент у них на месте оказался исключительно способный человек.

Ну и сама плата не из дешевых. Если я где не прав или заблуждаюсь, пусть меня поправят. Большое спасибо за развернутый ответ про дружбу с STM! STM32F4Discovery у меня была, но я убоялся количества ножек и общей монструозности сей конструкции и по-тихому ее сбагрил другому желающему поиграться.

Хотя, предварительно ввалил в нее (тогда еще я был Read-only, и небольшая статейка про это дело песочницу не покинула) и малость поигрался. В целом, после поверхностного знакомства с Discovery. Я решил начинать с чего-то попроще. А вот соорудить ST-Link — это мне в голову не приходило, наверное, прямо сегодня и займусь. Не знаю, на мой взгляд они там в ST что-то не совсем то делают в смысле продвижения этих МК. Заявлено вроде бы как замена Ардуино, но замены как-то не получается, слишком сложно пользовать. Это скорее уровень после освоения Ардуино, больше возможностей, но порог вхождения выше.

Платы же отладочные, дискавери, можно сказать, копеечные, расчет явно на массовость. Тут на хабре разрекламировали эти контроллеры, а у меня соображение было, на МК примитивную систему навигации сделать, чтобы положение сенсора в пространстве грубо отслеживать, в пределах нескольких метров и показания сенсора на ПК передавать. Можно было бы это потом как-то попользовать для сканеров, например, металлоискателей, ближней локации и т.п.

Сам я не программист, больше железячник, причем, больше по аналоговой технике. Тем не менее, решил попробовать.

Ну вот приобрел я эту плату, сначала на кортекс M3, кое-как через кейл запрограмировал, поморгал дидами, потом взял пример (не из Cube) и сделал обмен с ПК через аудиопорт (понятно, что лучше через COM, USB и пр., но уж как смог). Даже отписался по этому поводу здесь: Дальше нужно было акселерометр/гироскоп как-то к этому приделать, данные с него обрабатывать и в ПК передавать. Отдельно акселерометр брать не стал, приобрел другую плату STM дискавери, со встроенным акселерометром, но уже на кортекс М4. Взял пример с акселерометром из Cube, попытался допилить — весь мозг сломал. Сначала оказалось что на моей плате акселерометр не того типа, что в примере. Причем, определять это пришлось экспериментально, маркировки там нет и никакой сопроводительной документации к плате также.

Ну ладно, нашел даташит на нужный акселерометр, переставил цифирьки-буковки, что-то вроде заработало — но только в пределах примера, а в явном виде в примере значения ускорений мне там найти не удалось. Обмен там шел через DMA, все летало мимо процессора. Заявление в жилищный комитет образец.

Для обработки же нужно было иметь ускорения по трем осям в явном виде в дискретные моменты времени. Возился долго, потом бросил — времени нет, нужно же и по работе что-то делать. У меня приятель есть, под Ардуино программирует, я ему STM32 порекомендовал, плату предложил попользовать, думал, разберется, потом меня научит, он вроде сначала загорелся, потом почитал все эти даташиты и то что есть по этому поводу в интернете и энтузиазм пропал. Так что начинающим, на мой взгляд, вряд ли это посоветуешь. Что еще досадно, нашел несколько примеров использования акселерометра, несложные сравнительно программы, статьи на русском языке — но для 302DL.

Discovery

Для 3DSH их приспособить не удалось. 3DSH это вроде бы более новый акселерометр, более точный или более чувствительный. Библиотечный пример для 302DL приспособить для 3DSH удалось, частота моргания светодиодов зависела от направления и величины наклона.

Как мышь плата тоже работала. Правки там были незначительные, типа этот самый id поменять и/или еще что-то, не помню точно. Библиотечный пример для использования оказался непригоден, там какой-то сложный многоуровневый код, очень запутанный. Только в рамках функциональности примера — диоды местами поменять и т.п., да и то не слишком просто. И еще добавлю, по поводу качества кода примеров.

Загружается стандартный набор, компилируется и линкуется, Времени это занимает много, минуты или даже десятки минут. Большая часть файлов в проекте примера не нужна, при удалении их из проекта функциональность не страдает. Еще часть просто удалить нельзя, хотя их ненужность очевидна. При их удалении линковщик выдает ошибки, на них есть ссылки в других файлах. Если закомментировать эти ссылки, проект примера нормально собирается и нормально функционирует.

Никто оптимизацией примеров явно не занимался, просто втупую что-то наваяли под копирку.

Posted :