Янв 112015
 

Язык C++ в проектах для STM32 мне до этого использовать не приходилось. Для программирования микроконтроллеров возможности языка Си с лихвой перекрывали все мои скромные потребности. Однако, все когда-то случается в первый раз, вот и мне понадобилось настроить проект в IAR для использования C++. Сразу скажу, что этот язык программирования я практически не знаю, когда-то был опыт программирования на языке высокого уровня, но это был Delphi. Помочь с настройкой проекта меня попросили, были какие-то проблемы с подключением готовых библиотек на C++. Поэтому я сделал простейший проект с настройками для использования этого языка. В дальнейшем, после выполнения данных настроек, каких-либо проблем не возникало, функции из библиотек C++ выполняются, и программа работает как нужно. Однако, как я уже говорил, делал подобный проект в первый раз, поэтому всего лишь расскажу о процедуре настройки проекта в моем исполнении.

Continue reading »

Янв 222014
 

С некоторой поры озадачился поиском бесплатной среды разработки. IAR и Keil предлагают бесплатные версии с ограничением размера выходного файла, для изучения вполне достаточно. Однако, 32 килобайта – это совсем немного, у меня сейчас в проекте микроконтроллер STM32F103RC с 256 килобайт флэша и программа уже скоро вылезет за эти ограничения. Поэтому начал подбирать бесплатную IDE, без подобных ограничений.

Continue reading »

Окт 252013
 

Итак, продолжим знакомство со встроенной flash памятью. Начало было положено здесь. Необходимость записи пользовательских данных во flash память может возникнуть тогда, когда надо сохранить эти данные при отключении питания. В отличие от многих других микроконтроллеров, тех же 8-разрядных AVR, к примеру, большинство микроконтроллеров STM32 начисто лишены собственной EEPROM памяти. Энергонезависимая память данных EEPROM есть только у серии STM32L1 (поправьте, если ошибаюсь, STMicroelectronics периодически обновляет свою линейку Cortex-ов), а такие популярные серии, как STM32F1, почему-то обделены данной памятью. Поэтому, чтобы сохранить настройки, результаты измерений и т.п. при возможном пропадании питания придется либо использовать внешнюю микросхему EEPROM, либо данные записывать в собственную flash память. С первым случаем все понятно, а далее рассмотрим как выполняются процедуры записи данных и стирания, какие регистры для этого служат, и некоторые другие подробности.

Continue reading »

Июл 112013
 

Основное предназначение flash памяти микроконтроллера – хранение кода программы. Именно отсюда извлекаются команды, которые затем выполняются ядром микроконтроллера. Весь алгоритм поведения микроконтроллера, каким его придумал разработчик программы, то, каким образом микроконтроллер реагирует на внешние воздействия, настройка всех периферийных модулей и т.д. – все это хранится во встроенной flash памяти. Целью нескольких последующих статей является более подробное знакомство со структурой и возможностями встроенной flash памяти, а также основными методами, позволяющими выполнять действия с этой областью памяти. Стирание и программирование всей памяти программ или отдельных ячеек, регистры конфигурации flash памяти, различные варианты защиты от доступа к этой области памяти и т.д. – все это будет изложено далее. Для удобства восприятия информация будет разделена на несколько частей. Первая часть является обзорной и в ней будет рассмотрена структура flash памяти некоторых серий микроконтроллеров из семейства STM32 с ядром Cortex-M3.

Continue reading »

 Posted by at 22:40  Tagged with: ,
Июл 112013
 

Полезная программа для конфигурации выводов GPIO, которую любезно предоставил TCoder, позволяет настроить необходимые выводы порта в нужную конфигурацию. Программа формирует код, который напрямую работает с регистрами порта, без использования стандартных библиотек.

Continue reading »

Апр 082013
 

Недавно вышла третья версия этой программы. О возможностях второй версии я рассказывал в статье STM32. MicroXplorer. В последней версии добавлена возможность генерации исходного кода для настройки выводов порта, связанных с внутренним периферийным модулем.

Continue reading »

Апр 022013
 

В данном режиме обнаружение изменения уровня сигнала на входе микроконтроллера приводит к “захвату” содержимого счетного регистра таймера. Это позволяет измерить период входного сигнала или длительность импульса. Измерение же обеих этих величин дает представление о параметрах входного сигнала с широтно-импульсной модуляцией. Для таймера общего назначения в режиме захвата можно использовать довольно гибкие настройки этого режима, поскольку набор регистров и схема входного каскада таймера дают такую возможность.

Continue reading »

Фев 032013
 

Завершаем тему с практическими примерами формирования сигнала PWM на выходе порта. В этой статье будет дано краткая инструкция по инициализации таймера для формирования ШИМ сигнала на выходе. Только теперь вся движуха электронов внутри контроллера будут управляться функциями стандартных библиотек StdPeriph_Lib. Пример проекта сделан в IAR и проверен на плате STM32L-DISCOVERY. Для микроконтроллеров серии STM32F10x код будет отличаться только в секции инициализации портов, а для таймера код будет совершенно одинаковым.

Continue reading »

Янв 302013
 

Для предыдущей статьи сделал небольшое дополнение – добавил код формирования PWM сигнала таймером для платы STM32L-DISCOVERY. Отличия здесь совсем небольшие, в инициализации вывода порта, да еще частота тактирования другая – здесь по дефолту используется источник MSI с частотой 2.097 МГц.

Continue reading »

Янв 292013
 

В этой статье рассмотрим метод формирования ШИМ (PWM) сигнала на выходе микроконтроллера. Я решил сразу не загружать вас всей информацией о работе каналов захвата/сравнения (Capture/Compare), а давать информацию небольшими порциями практических примеров. А всю теорию вынести в отдельную статью. Формирование PWM сигнала на выходе с помощью таймера является одним из режимов работы каналов Capture/Compare таймера. В этой статье будут рассмотрены минимально необходимые настройки таймера, которые позволят увидеть на выходе микроконтроллера сигнал с регулируемой длительностью импульсов.

Continue reading »