admin

STM32 старт с CMSIS

11 сообщений в этой теме

admin    2 316

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
mail_robot    1 420
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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
CoBa31Rus    1
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 не умеючи им пользоваться, что я не сдержался :) Это все спорная тема напоминающая холивар, не хочу ее поднимать совсем, каждый самурай своим путем пусть идет, я лишь предлогаю один из многих, кто то и на асме пишет, и молодец!

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
mail_robot    1 420

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

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

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

9 hours ago, CoBa31Rus said:

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

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
UTSource

Найдите миллионы труднодоступных

электронных компонентов

CoBa31Rus    1
1 hour ago, mail_robot said:

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

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

1 hour ago, mail_robot said:

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
mail_robot    1 420

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

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

2 hours ago, CoBa31Rus said:

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

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

4 hours ago, mail_robot said:

тот тамый С++

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
CoBa31Rus    1
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, я чегото не уловил.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
CoBa31Rus    1
1 hour ago, mail_robot said:

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
mail_robot    1 420

 

я в третий раз повторю - С++ 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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
CoBa31Rus    1
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:

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

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

Поделиться сообщением


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

Ваша публикация должна быть проверена модератором

Гость
Вы не авторизованы. Если у вас есть аккаунт, пожалуйста, войдите.
Ответить в тему...

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

  Разрешено не более 75 смайлов.

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

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

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

Загрузка...