На волне вчерашнего поста https://pikabu.ru/story/18_podrobneyshikh_urokov_po_programm...
Есть идеи по написанию уроков по различным темам в разрезе STM32. Приглашаю @DmitryAR, @witiliar, @XanderEVG, @Arimf, @Alexey9, @slonofil, и @AlexGyver к обсуждению. Сам я занимаюсь разработкой и проектированием автоматики для отопительных систем на биотопливе, готов говорить в этом разрезе.
Собственно не вижу смысла говорить об основах языка, вроде типов данных. @AlexGyver это уже осветил. Но может стоит это преподнести в разрезе C99, а не C++?
Вот темы, которые я бы мог осветить, по разделам:
Основы программирования в разрезе C99 и STM32:
- #define: хитрости и приёмы
- SWITCH/CASE или IF/ELSE: когда и где применять
- Битовые операции: хитрости и приёмы
Фишки в разрезе STM32:
- FreeRTOS: планировщик, семафоры, стэки
- CubeMX и HAL: как сохранить переносимость кода, как искать нужные функции, где искать примеры и прочее
- Настройка таймеров, их различия, где искать информацию в документации по их параметрам
- RTC
- ADC и DAC
- Обработчик ошибок с задержками с использованием FreeRTOS (собственная библиотека)
- Простая Round Robin База данных (собственная библиотека)
Среда программирования и аппаратная отладка:
- Настройка собственной среды под Linux и Windows
- Настройка Sublime Text, System Workbench for STM32, KEIL
- Отдельно по KEIL: стилизация под Monokai, дебагинг, трэйсинг, настройка компилятора
- Логический анализатор (могу рассказать про Saleae Logic)
Модули:
- Принципы работы шин I2C, SPI. Их достоинства и недостатки. Различные режимы: Polling, Interrupt, DMA
- Watchdog: IWDG и WWDG - назначение, настройка
- Использование 7-сегментных дисплеев: подключение напрямую к МК и с помощью драйвера MAXIM MAX6950/MAX6951 (собственная библиотека)
- SPI EEPROM STM M95xxx (собственная библиотека)
- I2C расширители портов NXP PCA9671 и PCF8574 (собственная библиотека)
Проектирование схем и хитрости:
- Как правильно разводить резонаторы
- Дребезг кнопок: триггеры Шмитта и RS-триггер
- Защита портов (в разрезе дискретных и аналоговых для токовых петель)
- Импульсные и линейные регуляторы напряжения: подбор элементной базы, разводка
- Реле: электромагнитные и твердотельные. Схемы подключения и различия использования
- В разрезе твердотельных реле особенно хочу остановиться на снабберных цепях
- Энкодеры
- Токовая петля
- Onewrire
- RS485 и Modbus (может имеет смысл рассмотреть их отдельно). По Modbus могу преподнести материал по адаптации FreeModbus Slave и собственную реализацию Modbus Master с использованием DMA и FreeRTOS
- Подключение датчика температуры PT100 напрямую (без звезды) с использованием ОУ в схеме стабилизации тока
- Фазовое регулирование напряжения: датчик нуля, табличные расчёты, таймеры
Проектирование готовых изделий:
- Проектирование плат в KiCAD: принципы работы, создание деталей, 3D-моделей и прочее
- Проектирование готового изделия в FreeCAD: сборочный чертёж, 3D-модель и т.д.
Отдельно могу поговорить об учёте и хранении радиодеталей, тем более, что использую самописную программу для этого.
Ну и на закуску, вот несколько готовых изделий: