Top.Mail.Ru

Stm32. Переходим на современный C++. Часть 8. Таймеры. Режим энкодера. Режимы Master/Slave.

Вступление. В завершение изучения таймеров, в частности таймеров общего назначения, рассмотрим оставшийся без внимания блок - Trigger controller: Таймер в режиме ведомого. Таймеры также могут работать в режиме ведомого с реакцией на внешнее событие, задаваемой битами SMS регистра TIMx_SMCR: 100 (Reset Mode): режим сброса, выбранный триггер сбрасывает счетчик; 101 (Gated Mode): режима шлюза, счетчик включен только при высоком ...

Продолжить чтение

Stm32. Переходим на современный C++. Часть 7. Таймеры общего назначения и модуль захвата.

Вступление. В предыдущем материале мы рассмотрели таймер общего назначения и использование каналов сравнения (скоро планирую подготовить материал с более объемными примерами), сегодня же к изучению предлагается второй компонент - каналы захвата. Каналы завхвата. Снова обратимся к диаграмме блока таймера общего назначения, где красным цветом выделены каналы захвата (до четырех для одного таймера) и разберем составные части ...

Продолжить чтение

Stm32. Переходим на современный C++. Часть 6. Таймеры общего назначения и модуль сравнения.

Вступление. Прошу прощения, если кого-то расстроил столь долгим перерывом, но конец года постоянно не оставляет ни минуты свободного времени. Ранее мы начали изучение таймеров в контроллерах Stm32 и рассмотрели базовый таймер, функционал которого ограничен увеличением счетчика (регистра CNT) и генерацией события (на которое можно "повесить" прерывание и DMA-запрос) при его переполнении. Переходим к следующему в иерархии ...

Продолжить чтение

Stm32. Переходим на современный C++. Часть 5. Система тактирования.

Вступление. На прошлом занятии мы начали рассматривать таймеры, а именно разобрали приемы работы с базовым таймером. Наименьший период генерации события переполнения, который можно получить, равен 1/8 мкс (при частоте тактирования таймера 8 МГц и нулевых значениях регистров предделителя и автоперезагрузки). Однако даже в такой конфигурации невозможно реализовать хоть какой-нибудь обработчик прерывания, который бы выполнялся с ...

Продолжить чтение

Stm32. Переходим на современный C++. Часть 4. Таймеры. Базовый таймер.

Вступление. На прошлом занятии мы закончили рассмотрение способов управления портами ввода-вывода с применением полностью шаблонной библиотеки Zhele. На сегодняшнем занятии будем рассматривать такую обширную тему, как таймеры, и начнем, конечно, с базовых их возможностей, реализованных в базовых таймерах. Таймеры в контроллерах Stm32. Все таймеры, представленные в микроконтроллерах Stm32, можно разделить на три категории, причем составляющих ...

Продолжить чтение

Stm32. Переходим на современный C++. Часть 3. Виртуальные порты ввода-вывода.

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

Продолжить чтение

Stm32. Переходим на современный C++. Часть 2. Работа с портами ввода-вывода.

Вступление. На прошлом занятии мы развернули рабочее пространство, а также собрали первый проект из готового исходника. Сейчас предлагается рассмотреть возможности по управлению портами и линиями ввода-вывода, предоставляемые библиотекой. Все классы для работы с GPIO доступны в заголовочных файлах <ioports.h> и <iopins.h>. Интерфейс GPIO. Библиотека Zhele предоставляет два основных семейства классов для работы с портами и линиями ввода-вывода: PortX, где X - ...

Продолжить чтение

Stm32. Переходим на современный C++. Часть 1. Настройка рабочего пространства.

Вступление. В сети появляется всё больше материалов, посвященных применению языка C++ для программирования микроконтроллеров. Являясь сторонником этого направления, хочу поделиться теми знаниями и умениями, которые получил, в виде цикла статей-уроков с рассмотрением вопросов разработки для Stm32 на современном языке C++ с применением разрабатываемой мною библиотеки (или фреймворка) Zhele. Я не являюсь профессиональным разработчиком в принципе, с ...

Продолжить чтение

Часть 20. I2C. Дополнение.

В статье "Часть 12. STM32 и C++. I2C в Cortex-M4" я описал, как работать с I2C на ядрах Cortex-M4. Продолжая работать с I2C на других чипах, я столкнулся с тем что данный способ общения с I2C корректен не для всех ядер. Описанный способ точно подходит для STM32F405xx и STM32F407xx, вполне возможно что подходит также и ...

Продолжить чтение

Часть 19. Не ModBUS, кое-что попроще (продолжение).

Продолжение предыдущей статьи. Если разобрались в том, что я и сам плохо понимаю (для тех, кто не понял - шутка), будем продолжать разбираться дальше. Есть два способа обмена: просто ведущий стучится к ведомому, тот в ответ высылает пакет со всеми данными, и второй способ, похожий на ModBUS (совсем чуть-чуть). В этом случае ведущий передаёт один ...

Продолжить чтение