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

STM32 старт с CMSIS


Рекомендуемые сообщения

Попробуем разобраться в основах программирования под платформу STM32

Ссылка на статью: http://cxem.net/mc/mc447.php

Автор статьи: http://cxem.net/profile/18172/

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

Реклама: ООО ТД Промэлектроника, ИНН: 6659197470, Тел: 8 (800) 1000-321

Quote

Просто? Максимально! Ну и где теперь HAL и SPL?

ну я бы так с ходу шашечкой то не махал. Для мигания диодиком сойдет, а вот для листинга текстовым объемом в 50-200 кило (а для АРМ это не редкость вовсе) сопровождение такого кода быстро превратится в ад.

Quote

ут не уместно использовать присвоение так как на этом же порту находятся пины SWD, поставите равно и придется поднимать камень с помощью connect under reset в программе STLink

все так про SWD. Только пугать не обязательно. Вопрос заливки новой прошивки решается без всяких танцев с бубном. Надо просто перед нажатием на кнопочку - залить, зажать ресет и отпустить. У программатора таймаут секунда. Все зальется в лучшем виде без всяких лишних прог. Попробуйте

Quote

лично я для этого настраивал SysTick (это такой системный таймер который может только считать

для помигать диодиком сойдет, но через 4,5 часа он переполняется и надо чутка костылей, чтобы на границе ваша прога не повисла на месяц. Поэтому просто так бездумно лучше не пользоваться. Есть стандартные таймеры и они на то и заточены. Да и систик не на то в ядре заложен. Он нужен для RTOS. Так что на перспективу лучше вообще забыть про этот таймер и не привыкать к нему особо. Хотя конечно на таймбэйз в той же CMSYS OS можно подключить любой доступный таймер общего назначения при конфигурации. А ОС полюбому понадобится (и ее применение оправдано целиком и полностью) уже начиная с F1xx. Да и на этом камне можно запустить 5-6 процессов, если лень писать свой диспетчер. А программа мигания светодиодом будет занимать 0,001% вместо 100% как у вас в примере и при этом не задействует ни единого тамера (системный не в счет, он априори под ОС)

Quote

Теперь немного о размере

совершенно бессмысленное стремление выиграть пару байтов. При такой скромной периферии и числе ног использовать все 16К будет весьма непросто даже на HAL, не говоря уж о голом регистровом коде. А экономия требует затрат времени. А если нет смысла его тратить, зачем тратить?

 

В остальном вполне толково написано. Для конкретно этого камня конкретно такой метод кодинга вполне оправдан. Но с переходом на вещи посерьезнее все же потребуется работа с библиотеками. Иначе соотношение время/выхлоп будет уже не в пользу STM32. В конце концов не зря же в эти камни заложено стоооолько ресурсов. Именно за тем, чтобы о них не думать при кодописании. Хотя знать основы конечно очень желательно

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

Нужно делать то, что нужно. А то, что не нужно, делать не нужно. (С) Винни Пух

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

20% скидка на весь каталог электронных компонентов в ТМ Электроникс!

Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!

Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!

Перейти на страницу акции

Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849

4 hours ago, mail_robot said:

ну я бы так с ходу шашечкой то не махал. Для мигания диодиком сойдет, а вот для листинга текстовым объемом в 50-200 кило (а для АРМ это не редкость вовсе) сопровождение такого кода быстро превратится в ад.

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

4 hours ago, mail_robot said:

Только пугать не обязательно.

Новички обязательно вляпаются, сколько форумов этим вопросом забито? Пробовал знаю.

4 hours ago, mail_robot said:

как у вас в примере

Как то не правильно с первого примера ОСРВ предлагать не правда ли? Мы же тут не проект обсуждаем. Для задержек сойдет вполне, а чтобы на границе не висло нужно немного мозга подключить. Если статьи будут интересны то уже в следующей я это обязательно освещу.

4 hours ago, mail_robot said:

совершенно бессмысленное стремление выиграть пару байтов

В МК оно будет всегда, есть проекты где это не актуально, но у нас так привыкли обсирать GCC не умеючи им пользоваться, что я не сдержался :) Это все спорная тема напоминающая холивар, не хочу ее поднимать совсем, каждый самурай своим путем пусть идет, я лишь предлогаю один из многих, кто то и на асме пишет, и молодец!

Спасибо за отзыв, по работе с библиотеками написано тонны мукулатуры, а вот без оных не много, чем бы я отличился если бы опять ардуинщиков плодил?)

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

Особенности хранения литиевых аккумуляторов и батареек

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

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

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

Но не об этом сейчас.

Вы вот очень переживаете за авторитет GCC, но так вот прям сказать что он незаслуженно задвинут... да нет вроде. Любой кто захочет попробовать CooCox (ну или эклипс) альтернативы то не найдет. И я сам некоторое время компилировал только им, пока не столкнулся с его естественными ограничениями. Да да, тот тамый С++ который вы уже отрекомендовали. Не хотят они жить дружно. Зато коммерсанты шпарят на нем - только держись. Это хорошо, что есть и GCC тоже, но ангажировать его настолько явно... зачем? 

9 hours ago, CoBa31Rus said:

чем бы я отличился если бы опять ардуинщиков плодил?)

а с чего вы взяли, что будете их плодить? Они сами расплодятся когда им надо будет. А стандартные библиотеки (будь то HAL или SPL) к ардуино-коду никакого отношения не имеют.

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

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

Нужно делать то, что нужно. А то, что не нужно, делать не нужно. (С) Винни Пух

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

Выбираем схему BMS для корректной работы литий-железофосфатных (LiFePO4) аккумуляторов

 Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ, также как и для других, очень важен контроль процесса заряда и разряда, а специализированных микросхем для этого вида аккумуляторов не так много. Инженеры КОМПЭЛ подготовили список имеющихся микросхем и возможных решений от разных производителей. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

1 hour ago, mail_robot said:

пока не столкнулся с его естественными ограничениями

Можно подробнее?

1 hour ago, mail_robot said:

деревянный отладчик

и вот тут тоже, в чем его деревянность? Он не удобен из за консоли это да, есть обертки.

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

ну и из-за консоли в том числе. А еще нужно и в железе уметь отлаживать, а не только из кода баги вылавливать

в любом случае работать из консоли у вас не получится. Это мазохизм. Придется ставить IDE и соответственно часть работы автоматизировать. Пропадет необходимость писать и мэйки и зависеть только от GCC

2 hours ago, CoBa31Rus said:

Можно подробнее?

я уже кажется писал о подробностях. Вы не внимательно читаете

4 hours ago, mail_robot said:

тот тамый С++

GCC хороший бесплатный процедурный компилятор. На этом все его достоинства и заканчиваются. Мне он не понравился низкой скоростью компиляции. Сидеть и ждать каждый раз 10-15 секунд на ребилде быстро надоедает. На тот же самый код у коммерческого компилятора уходит 2-3 секунды. Для кода размером с мигалку пойдет, потом станет напряжно

У меня встречный вопрос - А чем вам так не понравились редакторы Keil и IAR? Что конкретно в них такого дубового? Что они не позволяют делать такого нужного, необходимого, удобного? Желательно без общих фраз, чисто по делу. И тот же вопрос по компиляторам - чем они конкретно хуже GCC? А то в статье упомянуто, что этот вопрос затронется, а конкретики так и не последовало

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

Нужно делать то, что нужно. А то, что не нужно, делать не нужно. (С) Винни Пух

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

27 minutes ago, mail_robot said:

Сидеть и ждать каждый раз 10-15 секунд на ребилде быстро надоедает.

Код в студию. И скрин где он же за 2-3 сек собирается тоже.

28 minutes ago, mail_robot said:

А чем вам так не понравились редакторы Keil и IAR?

Подсветка, убогий перенос строки из за которого Keil ложится на лопатки, дерево проекта вообще можно бесконечно критиковать, абсолютно не логичное расположение настроек проекта. Про компилятор я не слова не говорил, компилятор нормальный во всех смыслах, я лишь указал что GCC не так плох как его иногда описывают, пишите в Keil? Пишите! Про IAR вообще ничего не знаю, мне хватило одного взгляда на скриншотах чтобы вспомнить старый добрый ламповый вынь98, и что то на подобие VisualBasic 6.0.

34 minutes ago, mail_robot said:

в любом случае работать из консоли у вас не получится

Интересное утверждение, вы уверены?

35 minutes ago, mail_robot said:

процедурный компилятор

Понятия не имею о чем вы. Что есть процедурный компилятор? Процедурным может быть ЯП.

40 minutes ago, mail_robot said:

Вы не внимательно читаете

Привидите конкретные ограничения GCC, я чегото не уловил.

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

1 hour ago, mail_robot said:

А еще нужно и в железе уметь отлаживать, а не только из кода баги вылавливать

А я чем занимаюсь по вашему? Отладка в железе не из кода баги отлавливает?

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

 

я в третий раз повторю - С++ GCC отказывается компилировать.  А g++ под арм я еще не встречал пока.

2 hours ago, CoBa31Rus said:

Код в студию

у вас дефицит собственного кода? Что мешает попробовать самостоятельно померить время и убедиться лично?

2 hours ago, CoBa31Rus said:

Интересное утверждение, вы уверены?

не совсем ясно выразился. Работать получится. Работать по настоящему продуктивно, сомневаюсь. OpenOCD далеко не шедевр отладки. Любая IDE по производительности метода уделает все ваши потуги угодить великому линуху.

2018-03-08_21-33-52.thumb.png.adc1138dc880ca3b3471f53b10a28fd8.png

подсветка вроде есть, дерево как дерево. Мало подсветки? Дык вообще то не все любят "пестрый" код. Вполне себе сдержанная цветовая схема. Все главное выделено, ничего лишнего. А в дереве те же самые абсолютно деревянные файлы на своих местах. Какие там еще настройки то? Настройки проекта чтоли? Там просто окошко отдельное, настраивай чего угодно.

Вы сударь просто ознакомились поверхностно. Видимо так же как с IAR-ом. А рассуждать о вкусе устриц не пробовав их... некрасиво

2 hours ago, CoBa31Rus said:

я лишь указал что GCC не так плох

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

2 hours ago, CoBa31Rus said:

убогий перенос строки

отработка нажатия на enter чтоли? Вы в курсе вообще, что существует как минимум 5 стандартов отработки автоформатирования кода. Keil выдерживает свой, GNU форматтеры соответственно свой. Разница конечно есть, и если вы попытаетесь расставлять скобки не там где они должны быть, то и там и там получите убогий перенос, если привыкли к обратному. Со стандартными форматами кода можно ознакомиться в настройках (к примеру) KDevelop

То есть вывод - вы предвзято и не очень грамотно ангажируете одно, обсерая другое. Вот и все

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

Нужно делать то, что нужно. А то, что не нужно, делать не нужно. (С) Винни Пух

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

52 minutes ago, mail_robot said:

А g++ под арм я еще не встречал пока.

Ну значит вы и не вникали в мою статью, там же в makefile есть правило для сборки c++, мало того он и стандарты С++14 поддерживает, плохо смотрели. Посмотрите на состав тулчейна.

56 minutes ago, mail_robot said:

Что мешает попробовать самостоятельно померить время и убедиться лично?

Отсутствие Keil и винды.

57 minutes ago, mail_robot said:

OpenOCD далеко не шедевр отладки.

Никто не шедевр.

58 minutes ago, mail_robot said:

Работать по настоящему продуктивно, сомневаюсь.

Чего нет в GDB что есть в Keil?

59 minutes ago, mail_robot said:

вроде есть

А вроде и глаза кровоточат. Ручное добавление файлов в это недодерево? Сборка для того чтобы проиндексировать? Такого даже !!!GEANY!!! себе не позволяет при этом не являясь IDE от слова совсем.

 

1 hour ago, mail_robot said:

Вы сударь просто ознакомились поверхностно.

А этого уже хватило.

 

1 hour ago, mail_robot said:

не так плох, обычно означает - так себе, но в целом терпимо

Что не устроило? Конкретно.

 

1 hour ago, mail_robot said:

отработка нажатия на enter чтоли

Нет, Enter в конце файла без которого кина не будет.

1 hour ago, mail_robot said:

То есть вывод - вы предвзято и не очень грамотно ангажируете одно, обсерая другое. Вот и все

Вывод холивар не меняется. Прошу его оставить.

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

  • 1 год спустя...

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

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

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

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

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

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

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

Загрузка...
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
  • Сообщения

    • Это конечно "хорошо", но что это доказывает? Уровень знаний и умений это не показывает, но заставляет задуматься... А по "первому вопросу", у меня два уточнения: А какая у вас схема управления реленачиная с с управляющего сигнала? А у вас оба реле на DC, или где-то, но встречается AC, AC/DC?
    • Решил сюда же написать т.к. тема похожа. Есть видеомагнитафон Sony slv x821, при включении в сеть горит стенбай, а также светодиоды на ручке перемотки назад и hi -speed rewind, при нажатии кнопки включения аппарат не включается, дисплей не светится. Проверял напряжения на блоке питания 6в, +-13в имеются, а дальше после линейных стабилизаторов нет, т.к. они как я понимаю запускаются с процессора судя по схеме. Вопрос что могло сдохнуть, я склоняюсь думать на процессор, история аппарата неизвестна, возможно был залит, имеет ли смысл с ним возится?
    • Спасибо.  Всё понял. А вот предупреждения за выход предела питания не в одной инструкции не встречал. Спасибо.
    • Правильно, 1в это еще понятно.  И то, слишком большая разница входного и выходного напряжения получается, нерационально. Поэтому в свой лабораторник я запихнул сразу несколько блоков питания с отдельными выключателями (благо место позволяло - корпус от маленького компа-кубика Acer ). 1. этот линейник (ставил два D1047 в параллель + выравнивающие резисторы). Кстати, сразу рекомендую поменять родные переменники что шли в наборе на многооборотные, для более плавной регулировки. Трансформатор-бублик со средним выводом 2х23в, обдув родным громадным вентилятором что был в корпусе компа. И того 3А без напряга (при выходном напряжении 12в), больше просто не тянет трансформатор. В качестве выпрямителя ставил двойной диод Шоттки прикрученый к металлическому корпусу, холодный. Входную емкость увеличил до 4х2200мкФ. 2. Отдельный Импульсник нв 8А со своим отдельным питанием (реально тестировал на 4А). 3. Двухполярник +/- 12v  для ОУ со своим трансформатором. Для экспериментов с ОУ. 4. Отдельная зарядка 5в 2а с USB выходом (использовал родное гнездо корпуса).  Отдельные вольтамперметры для блоков. И еще есть место, можно еще что-то добавить.  Поэтому кому нужны большие токи особенно при малых напряжениях на выходе - оставляйте место в корпусе для импульсного стабилизатора, и даже можно использовать один и тот же трансформатор. Это лучше чем требовать от линейного блока питания лишние амперы, тем более без дополнительного вентилятора обдува. Кстати, в китайском наборе идет стабилизатор 24в для вентилятора, но большинство комповых вентиляторов либо 12в. Мне для этого все равно пришлось питать вентилятор отдельно.
    • Понятно теперь, буду настраивать.  Одна непонятка ещё. На фильтре присутствует переключатель фазы, сколько раз этот тумблер не щёлкал, разницы особой не заметил. Только бас из одного угла перемещался в другой и всё   Вот вопрос: как на выходе усилителя определить фазу (+/-)? Не у колонок, а именно у выхода усилителя, т.к. к нему подключён ещё один фильтр 2 порядка и скорее всего «+» с «-» возможно поменялись. Хочу подключить всё в правильной полярности и не дро#ить этот переключатель фазы. 
    • Вот фото некоторых моих работ, небольшие поделки для местного производителя https://postimg.cc/gallery/4h72K81. Ранее доводилось ремонтировать оборудование гораздо серьезней. Программы на ПЛК кстати тоже сам писал.   На фото по ссылке, в ящике с УПП, установлен как раз тот самый бп, и те самые реле омрон. Там все работало, не один ящик был собран. Но после случился тот самый случай. Меняли блок, реле, без толку. Единственное что могло поменяться, так это завод изготовитель реле, партии приходили то с Тайваня, то с какой то европейской страны. По артикулу тот же, но головы и розетки друг к другу не совсем подходили.   В общих чертах, как работает обычный ИБП я представляю, выпрямить, сгладить, шим регулирование, трансформация высоких частот, сглаживание и фильтрация на выходе. Что такое ШИМ я тоже представляю, используется так же в частотниках, в выходах ПЛК для управления скажем драйверами, которые управляют в свою очередь пропорциональными гидроклаппанами или приводами. Про светодиоды, чем они питаются и их ВАХ то же в курсах. Про работу ибп со стаб. тока, у которого при изменении нагрузки меняется напряжение а ток стабилизируется на одном уровне, и про аварийный режим холостого хода тоже слыхал. Институтов не заканчивал, углубленно в ИБП не вникал. Был случай, который я описал, и есть вопросы, которые я уже задал.
×
×
  • Создать...