Программа для мигания
Основной код программы хранится в файле main.c. Найдём этот файл в дереве проекта и откроем его. Слева появится вкладка с редактором кода выбранного файла.
Код состоит из фрагментов, которые генерируются автоматически при любом изменении в конфигураторе, и фрагментов, куда разработчик может вставить свой код. Фрагменты разработчика помечены комментарием, начинающимся со слов «USER CODE«. Если написать что-то, вне этих фрагментов, конфигуратор всё удалит!
Найдем главный суперцикл программы, а в нём наш фрагмент:
/* USER CODE BEGIN 3 */
/* USER CODE END 3 */
Теперь придумаем, что туда вписать. Для смены состояния контакта используем стандартную функцию:
HAL_GPIO_WritePin(порт, индекс, состояние)
Здесь порт — имя порта, которому принадлежит контакт. Поскольку мы назначили псевдоним, то имя будет такое: LED_GPIO_Port. Затем идёт индекс контакта в порту — LED_Pin. Наконец, третий параметр — состояние: GPIO_PIN_SET — высокий уровень либо GPIO_PIN_RESET — низкий уровень (в Ардуино это эквивалентно HIGH и LOW).
После включения и выключения светодиода нам нужно немного подождать, иначе глаз не заметит столь быстрого мигания. Используем функцию:
HAL_Delay(время)
где время — количество миллисекунд, которые нужно подождать.
Таким образом, чтобы мигнуть светодиодом, пишем:
HAL_GPIO_WritePin(LED_GPIO_Port, LED_Pin, GPIO_PIN_SET);
HAL_Delay(50);
HAL_GPIO_WritePin(LED_GPIO_Port, LED_Pin, GPIO_PIN_RESET);
HAL_Delay(500);
А вот так это будет выглядеть в редакторе.
Сохраняем файл и переходим к сборке проекта.
Компиляция программы
Чтобы собрать все компоненты программы воедино и превратить это в код пригодный для работы в микроконтроллере, запустим процесс сборки. Для этого, выберем в меню пункт: Project / Build Project. В консоли под вкладками начнет отображаться процесс сборки, который завершится текстом:
22:05:23 Build Finished. 0 errors, 0 warnings. (took 25s.625ms)
Если рядом с errors стоит не 0, значит в коде какая-то ошибка. Пока все ошибки не будут устранены, программа не скомпилируется. warnings — это предупреждения, на которые тоже следует обратить внимание, но они не препятствуют сборке программы.
Следующий этап — самый волнующий: загрузка программы на микроконтроллер.
выдает ошибку ../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 прошивку стирал, не помогло.