Старый добрый UART, сколько лет он уже существует? Только сама природа это помнит, тех древних мудрецов, которые упаковывали сообщения в асинхронные пакеты и отправляли по гудящим столбам сквозь пространство и время... И вот этот интерфейс дожил до наших дней, и, кстати, никуда уходить не собирается. Внутри STM32 уже есть периферия для работы с портами UART во всевозможных режимах, на разных скоростях. Моя задача - показать, насколько просто и экономично можно программировать этот интерфейс. Вооружайтесь до зубов USB свистками UART, это будет увлекательное путешествие.

Tags: ,

Помимо таймеров общего назначения, о которых я расскажу немного позже, в микроконтроллерах STM32 существует еще и таймер SysTick. Этот таймер уже встроен в ядро Cortex M3 и он может отсчитывать произвольное количество тактов и формировать прерывание по факту окончания счета. Так, например, если ядро работает на частоте 64 МГц, а значение Reload регистра 64000, то 1000 раз в секунду SysTick будет обнуляться. Счетный регистр 24-битный, это значит, что можно отсчитывать и достаточно большие интервалы времени, например, 100 мс (Reload reg = 6 400 000). Таймер очень удобен для формирования неблокирующих задержек. Даже в HAL'е он активно используется для отсчета задержек HAL_Delay(). Любопытный факт: ни в Datasheet, ни в Reference Manual для своего STM32 вы не найдете информацию по работе с SysTick. А здесь найдете!

Tags: ,

В этом уроке вы узнаете как настраивать порты ввода-вывода (General I/O Ports, GPIO) для написания супер быстрого и супер маленького кода. Научитесь устанавливать состояние выходов и читать состояние входов. А еще узнаете, как настроить все GPIO очень быстро и без ошибок. Используйте мои уроки для того, чтобы понимать, что вы делаете. Не отказывайтесь от CubeMX полностью. Он будет помогать вам сделать разработку еще быстрее. А знания разработки под CMSIS помогут сделать быстрее ваши программы.

Tags: ,

Когда вы работали с STM32 CubeMX вы быстро выставляли мышкой источник тактирования, выбирали делители для шин. Осмелюсь предположить, что вы могли тупо задать частоту HCLK и позволить кубу самостоятельно настроить за вас систему тактирования! Куб очень полезный и очень опасный инструмент, без него начинает казаться, что тактирование ручками настроить вообще не реально. Но это не так и вы в этом убедитесь, конечно же. В микроконтроллерах на базе ядра ARM Cortex-M непростая система тактирования, на первый взгляд. Но стоит лишь один раз во всем разобраться и сразу станет не так страшно. Чтобы ядро процессора функционировало, ему нужен источник тактовых сигналов, чтобы периферия (GPIO, UART, SPI, АЦП и т.д.) функционировала - ей тоже нужно тактирование! Наверное я обрадую вас, сказав, что этот урок можно вообще пропустить, ведь по умолчанию, ядро УЖЕ работает на частоте 8 МГц. Но если хотите вникать по полной, то добро пожаловать под кат* (*вид вечнозелёных кустарников из семейства бересклетовых). Я напомню, что в этом цикле уроков работаем мы с микроконтроллером STM32F103C6T6.

Tags: ,

Этот курс рассчитан, прежде всего, на профессионалов, кто уже имеет опыт разработки на HAL для STM32 и планирует освоить более низкий уровень для достижения жесткой оптимизации. Кроме того, низкоуровневая разработка для STM32 позволит со временем легко справляться с другими микроконтроллерами ARM Cortex-M для которых не существует библиотеки абстракции HAL. Проще говоря, этот цикл статей позволяет стать независимым от HAL. Здесь я объясняю только самые основные возможности и никак не претендую на какой-то расширенный обучающий курс. Главное преимущество моих уроков в том, что все я проверяю на реальном железе. Этих статей вам не будет достаточно для всеобъемлющего изучения разработки STM32 с CMSIS. Где-то вам придется нагугливать дополнительно техническую документацию, такую как Datasheet'ы, Reference Manual'ы. Хотя я стараюсь здесь приводить скриншоты оттуда. Для удобства разработки мы будем использовать Keil MDK, с помощью мастера создания проекта мы можем создать пустой проект и настроить его как будет удобно. Далее, в качестве примера, я буду использовать микроконтроллер STM32F103C6 с 32 кБ Flash и 10 кБ ОЗУ (серия Low density).

Tags: ,