Конфигуратор
Настройка входов/выходов, таймеров и прочей периферии на stm32 дело непростое. Чтобы упросить процесс разработки, в STMicroelectronics сделали специальный инструмент для настройки, который называется SMT32CubeMX. Теперь этот инструмент встроен в CubeIDE и мы будем им пользоваться для этого и последующих уроков.
Как и у прочих микроконтроллеров, контакты в STM32 нумеруются по схеме: P[порт][индекс]
Например, PA10 — это контакт с индексом 10 в порту A. Именно к этому контакту мы и подключим светодиод. Воспользуемся простейшей схемой с резистором на 200 Ом, такой же, как в уроке про светодиод на Ардуино.
Настройка контакта в режим вывода
Настроим в конфигураторе контакт PA10 на выход (в Arduino IDE за это отвечает функция pinMode). Жмём левую кнопку мыши на контакте и открываем выпадающее меню с разными вариантами использования ножки.
Выбираем GPIO_Output.
Контакт подсветится зелёным и получит подпись GPIO_Output. Теперь назначим псевдоним для этого контакта. На этой же вкладке, в правом меню, раскроем пункт System core / GPIO.
Этот раздел меню отвечает за настройку параметров контактов общего назначения — GPIO, которые мы ранее активировали. Можно назначать псевдонимы, прерывания, устанавливать подтяжки к питанию и земле, и прочее. Выберем наш контакт PA10.
В поле User Label напишем свой псевдоним, пусть этот будет слово LED. Псевдоним нужен сугубо для удобства. Теперь нам нет необходимости помнить ни порт, ни номер — будем в программе использовать слово LED.
Настройка контактов программатора
Есть ещё одна настройка, которая поможет нам в дальнейшей работе . Если этого не сделать, то после первой прошивки программатором ST-Link, микроконтроллер перестанет прошиваться. Это, конечно, можно будет исправить, но лучше заранее предохраниться.
Зайдем в раздел SYS и в поле Debug выберем Serial Wire.
Теперь контакты PA13 и PA14 будут зарезервированы за программатором. Более подробно про этот нюанс и про то, как освободить эти ножки для других функций можно будет прочитать в статье про STM32F103.
Следующий шаг — написание кода программы.
выдает ошибку ../Core/Src/main.c:100:22: error: ‘LED_GPIO_Port’ undeclared (first use in this function); did you mean ‘MX_GPIO_Init’?
такого характера
подскажите что это может быть?
Компилятор говорит что не знает то такое LED_GPIO_Port и предлагает вместо этого функцию MX_GPIO_Init. Можете показать весь main.c?
Сделал все по вашему уроку, проект не компилируется. ‘LED_GPIO_Port’ undeclared (first use in this function)
‘LED_Pin’ undeclared (first use in this function) main.c /led_blink/Core/Src line 97 C/C++ Problem. Так и не понял в чем проблема, буду дальше разбираться.
Разобрался. Нужно было на led_blink.ioc нажать правой кнопкой мыши и выбрать Generate Code.
На моем компьютере установлена 32 битная версия Windows 7 по ссылке доступна 64 битная версия, как быть ?
Уважаемый, подскажите… Сделал, всё собралось, но есть одна странность — почему-то светодиод на таблетке молчит, но вот на программаторе мигает. Как этот шайтанамана лечится?
Спасибо большое, все заработало!
Не прошивается.
Error in final launch sequence:
Failed to start GDB server
Failed to start GDB server
Error in initializing ST-LINK device.
Reason: (0) Unknown. Please check power and cabling to target.
Через STM32 ST-LINK Utility прошивку стирал, не помогло.