Программа для мигания

Основной код программы хранится в файле 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 — это предупреждения, на которые тоже следует обратить внимание, но они не препятствуют сборке программы.

Следующий этап — самый волнующий: загрузка программы на микроконтроллер.


Изменено:

STM32 и CubeIDE: Мигаем светодиодом: 7 комментариев

  1. выдает ошибку ../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?

  2. Сделал все по вашему уроку, проект не компилируется. ‘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. Так и не понял в чем проблема, буду дальше разбираться.

  3. Разобрался. Нужно было на led_blink.ioc нажать правой кнопкой мыши и выбрать Generate Code.

  4. Уважаемый, подскажите… Сделал, всё собралось, но есть одна странность — почему-то светодиод на таблетке молчит, но вот на программаторе мигает. Как этот шайтанамана лечится?

Добавить комментарий

Ваш адрес email не будет опубликован.