На китайском рынке широко представлена отладочная плата STM32F407VET6. Стоит порядка 17$. Помимо самой платы в комплект входят две перемычки для установки режима программирования, комплект из 10 проводов мама – мама и USB кабель для программирования платы. в данной статье так же рассмотрим подключение платы к компьютеру и зашьем первую программу мигания светодиодом. Вид платы представлен на рисунках ниже.
Обратите внимание на таблицу с обратной стороны платы. Она показывает в каком положении необходимо установить перемычки что бы запрограммировать плату или ее память. Без этого плата вообще не определиться.
MODE | B0 | B1 | Комментарий |
FLASH | 0 | X | Работает зашитая программа в контроллере |
ISP | 1 | 0 | Работает режим прошивки микроконтроллера |
SRAM | 1 | 1 | Работает режим прошивки микросхемы памяти |
Схема STM32F407Vet6
Перед началом разработки рекомендуется изучить схему платы STM32F407VET6. Скачать ее можете по ссылке.
Так же для более комфортного изучения данного микроконтроллера скачайте DataSheet на данный МК: скачать.
Программирование STM32F407Vet6
Вот мы и дошли до разработки первой нашей программы. Так как это микроконтроллер ST, по этому я буду использовать программные средства от компании ST-Microelectronics. Это CUBEMX для настройки периферии, CubeIDE для разработки и компиляции кода и программу STM32CubeProgrammer для прошивки микроконтроллера.
Создание проекта в CubeMx, такое же как и в CubeIDE. Первым делом нам надо установить в настройках какой кварцевый генератор мы будем использовать. На плате установлен кварц частотой 8 МГц. Его мы и пропишем в CubeMX.
В поле High Speed Clock (HSE), необходимо выбрать Crystal/Ceramic Resonator. Этим мы указываем, что контроллер будет тактироваться от внешнего резонатора.
Далее в настройках RCC Parameter в поле HSI Calibration Value,изменить 16 на 8. Тем самым мы указываем что частота резонатора 8MHz.
Остальные параметры оставляем без изменений.
На вкладке GPIO настроим наш PIN, к которому подключен светодиод, на выход. Укажем первоначальное состояние 0 (LOW). Также назначим нашему пину говорящее имя, что бы потом проще было ориентироваться в программе. У нас это имя LED_A7.
Вот и все, проект настроен. Теперь в вкладке Project Manager необходимо указать папку для сохранения проекта и IDE. Мы будем использовать CubeIDE. Далее нажимаем Gerate code.
ВНИМАНИЕ! При создании папки для проекта, убедитесь, что в пути к папке нет русских символов. Это правило относится как к CubeMX, так и к CubeIDE.
Запускаем CubeIDE и открываем сгенерированный проект. В файле main.c ищем функцию main
и в бесконечном цикле пишем код:
/* USER CODE BEGIN WHILE */ while (1) { HAL_GPIO_WritePin(LED_A7_GPIO_Port, LED_A7_Pin, 1); HAL_Delay(1000); HAL_GPIO_WritePin(LED_A7_GPIO_Port, LED_A7_Pin, 0); HAL_Delay(1000); /* USER CODE END WHILE */ /* USER CODE BEGIN 3 */ }
Здесь мы используем чистый HAL. Набор библиотек и функций для удобной работы с железом.
ВНИМАНИЕ! Размещать свой код необходимо между строчками комментария /* USER CODE BEGIN WHILE */ код /* USER CODE END WHILE */. Иначе при перекомпиляции в CubeMX ваш код будет удален.
Подключение stm32f407vet6
И так, теперь необходимо прошить нашу отладочную плату STM32F407VET6. Перед прошивкой установите перемычки из комплекта в режим ISP или FLASH. Запустите программу CubeProgramer.
Нажмите на плюс, что бы открыть прошивку. Нажмите кнопку Download и дождитесь загрузки. После этого отключите плату, снимете перемычки и подключите ее вновь, что бы подать питание на плату. Наблюдайте за миганием светодиода.
ВНИМАНИЕ! Чтобы воспользоваться отладчиком и проводить Debug к плате STM32F407VET6 необходимо подключить программатор VLINK. Без программатора код нельзя будет дебажить.
ВАЖНО! К сожалению есть такая особенность, что электрические схемы могут отличаться от платы к плате. Если у вас что то не работает, светодиод или кнопка, попробуйте прозвонить, что бы точно убедиться куда она подключена.
Документация
Где купить
- Отладочная плата STM32F407VET6 на Алиэкспресс
HAL_ это не интересно!! Я сторонник CMSIS.
У HAL_ и CMSIS есть свои плюсы и минусы. В идеале нужно знать и то и то.