STM Урок 146. LL. STM32F1. Светодиоды и кнопка



В уроке 144 мы с вами познакомились, какие основные режимы пониженного энергопотребления существуют у контроллеров stm32 и поглубже познакомились с одним из них — с режимом SLEEP.

И, прежде чем приступить к изучению остальных режимов, давайте познакомимся с библиотекой low-layer drivers или, попросту говоря, LL.

Данная библиотека, равно как и библиотека HAL, может спокойно использоваться в интерфейсе проектогенератора Cube MX, и позволяет более гибко работать с контроллером и его регистрами, чем HAL. Также были многочисленные просьбы сделать несколько уроков с использованием данной библиотеки. А также это будет ещё один шаг к программированию контроллеров на более низком уровне. Возможно, так мы постепенно доберёмся и до ассемблера. Я уже давно до него добрался и, в принципе, готов поделиться с вами своими наработками, если будет желание. А оно, как я подозреваю, уже есть, так как тоже был ряд просьб и пожеланий по этому поводу.

Думаю, рассказывать голословно (без практического использования) о библиотеке LL смысла нет и мы сразу приступим к созданию простейшего проекта. В нём мы попробуем по очереди помигать светодиодами, используя определённые ножки портов, а также попробуем поработать с портом и на вход, отслеживая нажатие кнопки, тем самым определяя, низкий или высокий в данный момент у нас на данной ножке уровень.

Контроллер будем по-прежнему использовать самый простой и дешёвый — STM32F103, расположенный на недорогой отладочной плате. Мало того, схему мы тоже не трогаем. Оставим ту же светодиодную планку, подключенную к тем же ножкам, как и при использовании со сторожевыми таймерами.

Создадим новый проект в Cube MX, выбрав наш контроллер

 

 

Включим RCC HSE с использованием кварцевого резонатора

 

 

 

Затем включим отладчик

 

 

Далее включим на выход ножки, отвечающие за наши подключенные светодиоды на планке

 

 

А ножку P1 включим на вход

 

 

Подтянем к ней резистор с ножки питания

 

 

И перед тем, как перейти к настройке тактирования, зайдём в раздел Project Manager, слева затем выбрав пункт Advanced Settings, и в настройках RCC и GPIO выберем там вместо HAL нашу библиотеку LL

 

 

 

В Clock Configuration настроим тактирование контроллера

 

 

Присвоим проекту имя и выберем среду разработки, в первых уроках, как обычно, мы будем использовать KEIL

 

 

Сохраним проект и откроем его в KEIL.

Настроим, как всегда, программатор на автоматическую перезагрузку контроллера и выставим уровень оптимизации в 0.

Перейдём в файл main.c и для наших светодиодов добавим удобные макросы, ясное дело используя уже функции LL, которые все описаны в документации STM32F1 HAL and Low-layer drivers, доступной для скачивания на официальном сайте ST Microelectronics

 

 

В функции main() погасим все светодиоды

 

 

Пока просто попробуем помигать нашими светодиодами без участия кнопки в бесконечном цикле

 

 

Соберём код, прошьём контроллер, и, если всё нормально, то наши светодиоды побегут с периодом 100 милисекунд

 

 

Теперь попробуем задействовать нашу кнопку. Для этого есть ещё одна функция.

Код наш будет работать аналогично коду из урока для библиотеки HAL. Если кнопка будет не нажата, то светодиоды не побегут и будут погашены.

Как только мы нажмём кнопку, светодиоды начнут мигать поочерёдно. Если мы отпустим кнопку, то светодиоды сразу не погаснут, а цикл дойдёт до последнего.

В бесконечном цикле добавим условие

 

 

Также не забываем закрыть нашу фигурную скобку в конце цикла

 

 

Соберём код, прошьём контроллер и посмотрим результат работы нашего кода. Светодиоды теперь бегут только когда мы нажмём кнопку

 

 

Итак, в данном занятии мы начали изучение новой для нас более низкоуровневой библиотеки — LL. Пока мы только поработали с портами ввода вывода. В дальнейшем, надеюсь, мы продолжим эту тему, что позволит нам более гибко настраивать наши проекты.

Всем спасибо за внимание!

 

 

Предыдущий урок Программирование МК STM32 Следующий урок

 

Исходный код

 

 

Отладочную плату STM32F103C8T6 можно приобрести здесь STM32F103C8T6

Программатор недорогой можно купить здесь ST-Link V2

 

 

Смотреть ВИДЕОУРОК (нажмите на картинку)

 

STM Библиотека LL. Светодиоды и кнопка

4 комментария на “STM Урок 146. LL. STM32F1. Светодиоды и кнопка
  1. Тимур:

    Спасибо за урок. Хочется больше уроков по LL

  2. Игорь:

    Спасибо за уроки по LL..
    у меня так Keil не понимает
    LL_GPIO_ReadInputPort(GPIOA)&GPIO_IDR_IDR1
    понимает так
    LL_GPIO_ReadInputPort(GPIOA)&LL_GPIO_PIN_1
    и можно так
    LL_GPIO_IsInputPinSet(GPIOA,LL_GPIO_PIN_1)

    по Вашим урокам подключил FM24CL64B и LM75(пока только считываю тем-ру)

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

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*