суббота, 2 мая 2026 г.

STM32 FreeRTOS blue pill

 Изучим бесплатную операционную ситему для встраиваемых систем FreeRTOS. Это не такая операционная система как те что устанавливаются на персональные компьютеры либо одноплатные вроде Raspberry pi. FreeRTOS это многозадачная операционная система реального времени для микроконтроллеров. В ней нет многого того что есть в обычных операционных системах но зато есть многозадачность. Что может быть полезным для случаев при которых микроконтроллер должен выполнять некоторое количество функций. Естественно микроконтроллер не может реально параллельно выполнять много задач одновременно. Если это конечно не такие задачи возможность выполнения которых предусмотрена на аппаратном уровне например DMA. В общем случае, задачи выполняются последовательно и на каждую выделяется определенное время. FreeRTOS является библиотекой которую можно подключить к проекту. Подключив её, можно будет проще реализовывать многозадачность чем при написании кода с нуля самостоятельно. В интернете есть один интересный проект, хорошо подходящий для изучения данной операционной системы на плате blue pill с микроконтроллером stm32f103. Найти его можно по ссылке https://github.com/sbodd/bluepill/tree/master. На странице проекта есть небольшая инструкция по его запуску:

  1. install the toolchain and libarary.
  2. change the TOOLROOT path in Makefile.common
  3. change arm-none-eabi-objcopy path in mkdump.sh
  4. run bash mkdump.sh (it will compile and flash final binary to bluepill, will ask for root password while flashing)
  5. go to app dir and type make clean to remove generated bins and object files

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

sudo git clone https://github.com/sbodd/bluepill.git

Помимо самого проекта, также понадобиться toolchain для микроконтроллеров stm32. Просто так его скачать не получилось (запретили качать из моего региона) поэтому пришлось скачать его сложным способом и добавить, на всякий случай, к себе на яндекс диск.

https://disk.yandex.ru/d/b14nePpO9Jjo5g

После скачивания, можно разархивировать данный тулчейн например утилитой tar.

sudo tar -xf  gcc-arm-none-eabi-7-2018-q2-update-linux.tar.bz2

Далее понадобиться изменить пару файлов проекта. Это Make файл и скрипт сборки проекта.


В Make файле нужно поменять все пути до тулчейна на корректные

Тоже самое проделать в скрипте сборки проекта + можно убрать загрузку stlink ом если нет stlinkа.
Каждый файл нужно сохранить. В редакторе nano для этого есть комбинация клавиш ctrl+o.
Теперь всё готово для сборки проекта и можно начинать исследовать исходный код.
он содержится по пути корень->Src->FreeRTOS->main.c
В начале, как всегда, подключаются заголовочные файлы библиотек.

Ниже объявляются хэндлеры задач. Задачи у нас будет две, для начала для простоты, поэтому и хандлера всего два.
Ещё ниже объявляются прототипы функций задач.
И ещё есть некоторое колличество прототипов функций инициализации и вспомогательных функций.
В функции main вызывается функция сброса настроек тактирования
и функция обновления тактирования ядра.
Также функция инициализации периферии. В данном случае это инициализация uart1.

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

Далее задается размер стэка задачи. Насколько я понял это то ко
личество оперативной памяти, в словах, которое задача может использовать в стэке.

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

Данный хэндлер впоследствии может быть использован для управления задачей, например для её завершения или приостановки.
Всё тоже самое проделывается теперь для второй задачи.
 После запускается шэдулер который, собственно говоря, и выполняет эти задачи.
В задачах обычно имеются бесконечные циклы и поэтому по идее выполнение программы никогда не должно выходить дальше шедулера но если вдруг это произойдет то дальше есть обычный бесконечный пустой цикл.
Также имеется функция инициализации периферии и пара вспомогательных функций для отправки сообщений в uart.
Теперь можно рассмотреть сами задачи. Функции ывполняюшие задачи должны принимать один указатель на тип void и ничего не возвращать т.е. возвращать void
В этих функциях д.б. бесконечные циклы. В данном случае одна из задач посылает один текст в uart с одной задержкой.
Вторая задача посылает в uart другой текст с другой задержкой между отправками.
Чтобы запустить сборку проекта, нужно зайти в папку со скриптом запуска проекта и запустить его специальной командой.
После, если сборка прошла успешно, можно найти прошивку в формате .bin там же где находиться исходный код. И загрузить её в микроконтроллер например через FlashLoaderDemonstrator или stlink. 


Также есть видеогайд коорый можно посмотреть



Адрес биткоин кошелька для поддержки - bc1qlhrmmkh77x2lzhqe4lt9qwkglswj64tsqt2l5g

четверг, 23 апреля 2026 г.

Конструктор, симулятор, решатель схем методом узловых потенциалов

 Метод узловых потенциалов, для расчета электрических схем, основан на первом законе Кирхгофа и законе Ома. Этот метод удобен для расчета схем с малым количеством узлов и большим количеством ветвей. Данному условию соответствует множество реальных схем (возможно большая их часть), поэтому данный метод выбран для расчета конструируемых, в редакторе ниже, схем. В редакторе имеется возможность поставить резисторы и источники тока (чего достаточно для составления схем замещения), а также провода и выбрать узел принимаемый за нулевой. Также можно запустить расчет схемы с выводом матриц и уравнений составленным методом узловых потенциалов. Пример расчета схемы в программе Mathcad. Если схема составлена некорректно (например есть разрыв (например провод установлен в середину другого провода а не край) или в одной замкнутой ветви есть два источника тока) то решатель покажет соответствующее всплывающее окно и расчет произведен не будет. Данная программа подойдет для помощи в обучении по ТОЭ, ОТЦ, электротехники или для моделирования схем, постоянного или переменного тока, приведенных к схемам замещения с резисторами и источниками тока.


Режим: Выбор
Направление и ориентация источника: →

Данные (Матрицы):

Здесь появится матрица проводимостей...
Здесь появится матрица источников тока...
Здесь появится матрица узловых потенциалов...

Система уравнений (МУП):

Здесь появится система уравнений...

Если данный САПР, калькулятор, проектирования схем оказался полезным то есть возможность поддержать автора и способстовать т.о. появлению подобного рода контента. Адрес биткоин кошелька для поддержки блога - bc1qlhrmmkh77x2lzhqe4lt9qwkglswj64tsqt2l5g

пятница, 17 апреля 2026 г.

Калькулятор цветовой маркировки резисторов

 Цветовая маркировка резисторов используется чтобы размещать информацию на корпусе малого размера, в читаемом виде и устойчивом к частичной утрате этой читаемости например из за повреждения корпуса, частичной покраски или закрытию обзора части корпуса соседними элементами. На корпусе обычно, цветными полосами, указывается сопротивление и допуск (т.е. неточность с которой указано сопротивление). Чтобы прочитать эту информацию нужно повернуть резистор так чтобы ближайшая к выводу или самая широкая цветная полоса располагалась слева. В т.с. самая левая полоса укажет первую цифру сопротивления, самая правая полоса укажет допуск (чаще всего она золотого, серебрянного или черного цвета (по этому признаку также, с большой долей вероятности можно определить стороны))(и если это не трехполосый резистор у которого допуск не указывается и всегда +-20%), вторая справа полоса укажет множитель на который следует умножить число составленное из цифр по самым левым полосам чтобы получилось сопротивление в омах. Сопротивления входят в стандартные ряды например E12, E24, E96. У резистора с 3мя цветными полосами могут быть сопротивления из ряда E12, У резистора c 4мя из E24 и у резистора с 5ю из Е96. 3х полосые резисторы самые не точные. 5ти полосые прецезионные а 4х полосые самые распространенные. Ниже приведен кодер/декодер цветовой маркировки резисторов для всех трех вариантов.

Цвет → Число
Число → Цвет
---

среда, 15 апреля 2026 г.

Генератор шума для сна

Ранее мы рассматривали аппаратный DIY генератор шума на транзисторах который совсем не трудно изготовить самостоятельно. Однако если возможностей самодельного аппаратного генератора не хватает или он по каким то причинам не подходит то можно воспользоваться программным генератором на данной странице. У данного генератора есть кнопка запуска и остановки, возможность записи и сохранения шума, таймер сна, регулировки громкости, частоты среза фильтра низких частот, динамики изменения шума (можно поставить на 0 если не нужна) и некоторые предустановленные режимы настроек.




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