Микроконтроллеры

Прерывания на stm32 f4 discovery - зажигаем диоды по кругу - arm

Продолжаем знакомиться с stm32f4 discovery.
На этот раз речь пойдёт о прерываниях.
Создадим программу которая будет зажигать диоды "по кругу" т.е. при нажатии на кнопку срабатывает прерывание и зажигается следующий диод..

Как и раньше я использую eclipse + arm plugin + st-util

Первым делом инклуды:

Ставим Eclipse + ARM plugin + stlink utility для работы с STM32F4 DISCOVERY в Linux

Недавно приобрел не безызвестную отладочную плату STM32F4.
Порадоваля дефолтной прошивке и приступил к настройке IDE для разработки.

Свой выбор я остановил на связки Eclipse + ARM plugin + Sourcery CodeBench.
Плюсы такого решение: бесплатно, много примеров
минусы: ставить всё придётся ручками и отдельно.

Мигаем диодами с помощью ШИМ ( PWM ) stm32f4 discovery [ arm ]

В этой статье речь пойдёт об использовании ШИМ контроллера. Применений этому режиму работы море, от банального моргания диодом, до управления двигателями и прочей электроникой.. Суть заключается в том, что при помощи широтно-импульсной модуляции и сглаживающей RC цепи можно получать аналоговое напряжение в диапазоне от логической еденицы до 0.

Мы же будем использовать таймер TIM4 нашего STM32F4 Discovery в качестве формирователя ШИМ сигнала (на буржуйском PWM - pulse width modulation).

Настроим и оставим как есть, чтобы диоды "моргали" с разной частотой.

Выводим строку "Hello world!" на LCD экран - [ AVR AtMega8 ]

Сейчас мы выведем нашу первую строку на LCD экран при помощи микроконтроллера AVR AtMega8.
Кодить будем на Си в AVRCodeVision. Симулировать результат в ISIS.

Собираем схему:

Ну а теперь открываем AVRCodeVision, создаём новый проект ну и кодим:

Программируем первый AVR контроллер [ AtMega8 ]

Для всего нижеизложенного нам понадобится:

  • CodeVisionAvr - для компиляции программы контролера
  • Proteus - для симуляции

Если у вас нет этих программ лучше скачайте именно их. В других всё может кардинально отличатся.
Немного для понимания процесса.
Тут вы не найдёте теоретических сведений о контроллерах и правильном их программировании. Это всего навсего хелловорд в мире контроллеров.
Мы запрограммируем контроллер, который будет мигать диодом по заданной программе.

Схема:

Прошивка внешнего контроллера при помощи stm32 discovery - SWD

Для создания минимального проекта нам понадобится: контроллер stm32 ( у меня stm32f103 ), жменя проводов, светодиод (для проверки).
Мы не будем вешать даже кварц, чтобы не усложнять процесс.
Очень удобно использовать вот такую плату-переходник с LQFP:

Стоит она в районе 1$. Зато не надо травить крохотные дорожки.
Собираем вот такую схему (для stm32f103 48ног):

Работаем с простыми таймерами STM32 F4 discovery

В любом современном контроллере есть таймеры. В этой статье речь пойдёт о простых (базовых) таймерах stm32f4 discovery.
Это обычные таймеры. Они 16 битные с автоматической перезагрузкой. Кроме того имеется 16 битный программируемый делитель частоты. Есть возможность генерирования прерывания по переполнению счётчика и/или запросу DMA.

Приступим. Как и раньше я пользуюсь Eclipse + st-util в ubuntu linux

Первым делом подключаем заголовки:

Моргаем портами контроллера AVR или программируем в Atmel AVR Studio

Эта статья подойдёт новичкам, которые только делают первые шаги.

Нам понадобится:
Atmel AVR Studio - для программирование
Proteus - для симуляции

Открываем студию. Видим привычное для пользователей Microsoft Visual Studio окно.

Жмём Файл - Новый проект

Создаём "C Executable Project". Задаём имя и жмём ок.
Теперь перед вами окно выбора контроллера:

Генерируем случайные числа на STM32 контроллере

В наше время ни для кого не секрет, что в современных контроллерах есть возможность генерировать случайные числа. Причём эта возможность заложена в устройства в виде отдельного "железного" блока.
Исключением не есть и STM32 контроллеры.
Я же расскажу о том как написать программу для этого семейства микроконтроллеров для получения 32битного случайного числа.
В стандартной периферийной библиотеке от STM32 (SPL) модуль для работы со случайными числами назвали RNG - Random Number Generator.