Первая программа для STM32. Мигание светодиода.

По традиции первая программа для микроконтроллера (отладочной платы) это программа, которая с заданной периодичностью мигает светодиодом.

Для разработки нам потребуются три программы: среда разработки IDE (System Workbench for STM32, он же SW4STM32), программа конфигурирования периферии процессоров STM (STM32CubeMX), программа для прошивки микроконтроллера (STM32 ST-LINK Utility). Последние актуальные версии перечисленных программ можно скачать с официальных сайтов: IDE, CubeMX, ST-LINK Utility, однако обращаю ваше внимание на то, что хоть программы и бесплатны, все равно придётся зарегистрироваться на ресурсах для получения актуальных ссылок.

С точки зрения материального обеспечения необходима отладочная плата STM32F407VGT6 (или подобная, приобретенная тут) и программатор ST-LINK V2.

1. Создадим новый проект в STM32CubeMX.


2. Выбираем микроконтроллер, на котором построена отладочная плата и для которого будет генерироваться шаблон проекта.

3. Настраиваем порты ввода вывода "System Core - GPIO". Для своей отладочной платы я знаю, что светодиод подключен на вывод PA1, поэтому сконфигурирую его как цифровой выход "Output Push Pull", а так же задам ему пользовательскую метку "Led".

4. Сконфигурируем источник тактового сигнала "System Core - RCC", установив High Speed Clock (HSE) = Crystal\Ceramic Resonator.

5. Настроим характеристики тактового сигнала на вкладке "Clock Configuration". У моей платы основной тактовый генератор, Input frequency = 8МГц. Так же изменим базовую частоту, на которой будет работать процессор HCLK =
 168 МГц.

6. Настроим параметры проекта на вкладке "Project Manager". Укажем имя проекта Project Name = FirstProg, папку расположения проекта Project Location = D:\Program.all\STM, средство разработки Toolchain/IDE = SW4STM32. Остальные настройки оставим без изменения.

7. Сгенерируем шаблон проекта, нажав кнопку "GENERATE CODE". В папке ProjectLocation\ProjectName (у меня это D:\Program.all\STM\FirstProg) будет сгенерирован шаблон проекта, который необходимо добавить в рабочее пространство IDE.

8. Добавляем проект в IDE System Workbench for STM32. Для чего в окне приветствия выберем "Import existing projects" (если окно не видно, отобразить его можно выбрав в основном меню Help - Welcome). Нажав кнопку "Browse" выбираем папку с сгенерированным ранее шаблоном проекта - у меня это D:\Program.all\STM\FirstProg. Нажимаем кнопку "Finish".

Новый проект будет добавлен в IDE.

9. Напишем первую программу для мигания светодиодом. Скорректируем main.c, добавив следующий код:
  
HAL_GPIO_TogglePin(Led_GPIO_Port, Led_Pin); // Переключаем состояние пина
HAL_Delay(500); // Задержка в мс  

Код следует разместить в процедуре int main(void), в цикле while (1), до комментария /* USER CODE END WHILE */. Это позволит безопасно изменять конфигурацию процессора в STM32CubeMX (например настраивать другие пины на ввод-вывод), не боясь того, что ваш код будет затерт.

10. Сменим конфигурацию сборки проекта на Release.

11. Скомпилируем проект. HEX будет сохранен в папке проекта, подпапке Release, т.е. d:\Program.all\STM\FirstProg\Release\

11. Подключим отладочную плату STM32F407VGT6 к программатору ST-LINK V2. Схема подключения пинов следующая "Программатор - Плата"

SWCLK - CLK
SWDIO - DIO
GND - GND
3,3V - 3V3



12. Заливаем программу в микроконтроллер. Запускаем STM32 ST-LINK Utility, подключаем программатор и настраиваем его параметры, выбрав "Target - Settings". Обращаем внимание на метод сброса: Reset mode = Software system reset.



12. Выбираем HEX файл для прошивки выбрав "Target-Program", нажав в открывшемся окне кнопку "Browse". Настройки по умолчанию не трогаем. Затем нажимаем кнопку "Start". Программа будет залита в отладочную плату.


Видео с разработкой первой программы для STM32 ниже.