Короче была у меня когда то мысль написать уроки по python, еще в начале моей карьеры. Ибо натыкался на некоторые проблемы, решения к которым не мог долго найти, а потом находил но руки написать это дело не доходили.
И чем дальше я продвигался в изучении этого языка, тем сильнее у меня пропадал интерес к этой идее.
Я и предположил, что связано это с тем, что чем больше ты узнаешь о какой то штуке, тем меньше тебе хочется возвращаться к решенным когда то давно задачам. Старые задачи если ты их помнишь становятся для тебя тривиальным, скучными и рутинными ( хотя естественно в свое время они для меня были очень непонятны).
Другое дело когда ты решил изучить для себя совершенно неизвестную для себя штуку. Где каждое новое знание для тебя целое открытие, с которым лично я сразу же хочу делится. Правда обычно делится получается с теми кто под руку попался, и как правильно им это вообще не интересно (мама прости но это так)).
На днях я решил плотно заняться STM32. Я вообще, давно хотел разобраться в таинствах микросхем , и пособирать всякие штуки на их основе. Даже года 2 назад закупил целый набор ардуино со всяким барахлом датчиками и т д и т п.
Но семья, работа, дом, теща, собака, кошка, корова, друзья, пиво, плохая погода, песни моргенштерна все это мешало мне заниматься этим делом.
Теперь наконец то я вырвался из этого порочного круга.
И чтобы мне было веселее я решил заливать то, как я изучаю все эти штуковины.
Это прелюдия а щас по факту:
1) Я сижу из под Debian , поэтому меня будет интересовать подходы разработки в этой среде. В целом это не сильно будет влиять на общую картину.
2) Почему stm32. все просто, хочу заниматься булингом ардуинщиков
3) В качестве среды разработки буду использовать VSCODE , мы же тут все за опенсорс не правда ли. ( НЕТ ,все равно потому буду писать скорее всего на jetbrains, продался...).
4) Прошивать буду через стандартный китайский stlink, потому незабываем его качнуть и поставить , любым удобным способом https://github.com/stlink-org/stlink
5) Копию кода (урезанного) я буду заливать на гитхаб : https://github.com/IzyI
6) Я буду мега максимально субъективен. Буду писать только те моменты которые я не понял и те нюансы которые мне показались важными. А также буду давать ссылки на сторонние ресурсы. Откуда я черпал знания. У боле умных людей.
7) Писать буду на СИ. И код я так себе пишу, даже если это Python. И уж если решили ругать мой код, то помните что главный ответ на главный вопрос 42.
8) Для сборки проектов буду использовать stm32cubemx https://www.st.com/en/development-tools/stm32cubemx.html ибо удобство
9) Большая часть кода скорее всего будет написана на библиотеке HAL. Но постараюсь по мере освоения юзать и CMSIS . Вкратце если кто не знает то в мире STM32 существует 3 библиотеки которые юзают разработчики :
- - **HAL** - набор драйверов позволяющая обращаться ко всей периферии микроконтроллера не сильно вдаваясь в суть .
**Плюсы:**
- скорость разработки
- мультиплатформенность (легко перенести код с одного stm32 на другой stm32 более жирный к примеру)
- простота работы.
**Минусы:**
- знающие говорят что местами глючная
- рано или поздно все равно надо лезть в кишки микроконтроллера
- жирноват по коду
- местами так се написана (многим не нравится).
*Отличный выбор если вам надо быстро поднять USB стек.*
*Херовый если вам надо выжать из микроконтроллера максимум. *
- - **СMSIS** - (Cortex Microcontroller Software Interface Standard) как вы не поняли это стандартное описания интерфейса для всех армов, включает в себя структуры описания регистров и стартовый набор макросов для работы.
**Плюсы:**
- работа напрямую с регистрами
- скорость кода и его размер
- чистота (прозрачность) кода
- скилы прокачиваются как у летчиков в 41-45 , ты либо выживешь во время вылета, либо тя собьют к (херам)
- можно делать просто волшебные штуки
- лапочка со всех сторон
**Минусы:**
- нет мультиплатформенности
- очень долгая разработка
* Отличный выбор если вы шарите и у вас много времени по жизни*
*Херовый если сроки горят или вы узнали что такое регистры месяц назад. *
- - **LL** - без понятия что за библиотека, да и в холиварах ее редко упоминают, а это значит нам это не интересно
А теперь коротко что нам надо для работы в Debian.
- компилятор:
sudo apt-get install gcc-arm-none-eabi
- openocd:
Эта штука отладчик, по идее понадобится потом
sudo apt-get install openocd
- stm32cubemx
Идем на офицальный STM сайт https://www.st.com/en/development-tools/stm32cubemx.html. Регаемся и качаем оттуда STM32cubemx.
Также можете скачать и установить IDE STM32cubeide, я не совсем люблю подобный софт, но думаю что в будущем это может пригодится как никак STM32cubeide все же заточен на работу с этими микроконтроллерами.
Для винды я не думаю что стоит приводить пример ибо там все накликивается кнопками
Идем на офицальный STM сайт https://www.st.com/en/development-tools/stm32cubemx.html. Регаемся и качаем оттуда STM32cubemx. Также можете скачать и установить IDE STM32cubeide, я не совсем люблю подобный софт, но думаю что в будущем это может пригодится как никак STM32cubemx все же заточен на работу с этими микроконтроллерами.
VSCODE я думаю тоже разберетесь и установите https://code.visualstudio.com/. В целом, на чем писать не так важно, лишь бы удобно было. VSCODE бесплатный и там есть более менее работающий переход по функциям и автоподсказки (но это не точно).
Что-жь соберем заготовку на наш первый проект.
Запустим STM32cubemx находим вкладку File кликаем new project.
Теперь найдем нужный нам микроконтроллер и кликнем start project.
Теперь переходим на вкладку project Manager. Указываем в качестве названия t1 во вкладке toolchain указываем Makefile
Кликаем generate code открываем через VSCODE. в терминале заходим в папку пишем make. На выходе у нас появляется папка build в которой лежат готовый файлы для заливки кода.
Как вы видите в linux не так сложно все это запустить. Хотя если честно когда я только сел разбираться для меня это был просто пи*ц. Даже щас из за больших пробелов в знании в языке Си и сборке через Cmake и Make файл, я страдаю . Но чай разберемся.))
P.S Я не последняя инстанция. Но если что пишите.)