Программирование МК STM32. УРОК 4. Библиотека HAL. STM32 CUBE MX. Светодиоды и кнопка

Поделиться
HTML-код
  • Опубликовано: 11 июл 2024
  • Программирование на СИ в среде Keil μVision.
    Пишем код под микроконтроллер STM32F407VG на плате STM32F4DISCOVERY.
    Сегодня мы проделываем те же процедуры со светодиодами и кнопками, но используя уже более продвинутую библиотеку HAL.
    В этом нам отлично помогает программа, созданная для автогенерации начального кода с использованием HAL - это STM32 CUBE MX.
    С помощью всего этого, но и не без собственного участия и изучения технической документации мы добиваемся намеченной цели
    Купить отладочную плату STM32F4-DISCOVERY можно здесь ali.pub/178fif
    Навигация по видео:
    00:00 Введение
    02:10 Скачиваем и устанавливаем Cube MX
    05:30 Создание нового проекта в Cube MX
    06:04 Настройка RCC
    10:43 Проект в Keil
    17:17 Бесконечный цикл
    23:05 Кнопка
    23:15 Испытание кода
    Рекомендуется также перед просмотром данного урока просмотреть данное видео:
    Урок 1. Установка Keil μVision • Программирование МК ST...
    Урок 2. Бегущие огни • Программирование МК ST...
    Урок 3. Библиотека SPL. Подключаем кнопку • Программирование МК ST...
    Текстовая версия урока и исходный код здесь narodstream.ru/stm-urok-4-bibl...
    Группа в контакте club116656325
    Группа в Одноклассниках ok.ru/group/52987126153436
    Группа в Facebook / 236905359999556
    Мой сайт "Программирование МК" narodstream.ru
    Форум narodstream.ru/forum
    Вы можете помочь проекту:
    ЮMoney
    yoomoney.ru/to/41001176473465
    Webmoney
    Z341906933112
    Карта Сбербанка (МИР)
    2202201799288929
    Можно в USDT
    1) Сеть:TRC20
    Адрес: TBBPFk5Widf1CYvF7Xk5ssKXeiPJHwtMgS
    2) Сеть: BSC BNB Smart Chain (BEP20) (комиссия намного меньше)
    Адрес: 0x2e38754DF1e54649Bf0D5CD6fD6D8c96a9f22f17
    3) Сеть: Huobi ECO Chain (HECO) (комиссия еще меньше)
    Адрес: 0x2e38754DF1e54649Bf0D5CD6fD6D8c96a9f22f17

Комментарии • 110

  • @ruslankovtun6584
    @ruslankovtun6584 5 лет назад +9

    Спасибо за ваши труды. Все уроки понятны и полезны!

  • @Andr_e_y
    @Andr_e_y 6 лет назад +1

    А мне как новичку HAL понятнее. Спасибо за ваши уроки. Смотрим дальше.

  • @vadimfilatov8649
    @vadimfilatov8649 6 лет назад +31

    На 1.5х и вправду оч удобно смотреть, я думал в коментах стебут.
    Спасибо за урок)

    • @narodstream552
      @narodstream552  6 лет назад +7

      И Вам спасибо за интерес к ресурсу. Ну это ранние уроки. Сейчас-то моя речь разогналась, так что скоро замедляться придется.

    • @KostsovKonstantin
      @KostsovKonstantin 5 лет назад

      Я думал усну. Почитал коменты, реально нужно x1.5. Кроме того, что спасибо и всё по теме буду на ночь включать, чтоб крепче уснуть.

  • @user-bx3qg8js3b
    @user-bx3qg8js3b 4 года назад +1

    Спасибо! Очень классно объясняете , пока понятно :)

  • @SignioreDiukini
    @SignioreDiukini 3 года назад

    Большое Вам спасибо за Вашу работу!

  • @Devid241
    @Devid241 5 лет назад +1

    Спасибо за ваши уроки...

  • @alniko9376
    @alniko9376 6 лет назад

    спасибо огромное за лекцию

  • @DrargonsM
    @DrargonsM 8 лет назад

    Очень все подробно и понятно!!!!

  • @sergienko_maxim
    @sergienko_maxim 4 года назад

    Ура, у меня получилось повторить ваш урок после 7 лет перерыва. Спасибо за этот цикл уроков. Все получилось с первого раза. Единственное, у меня в main.c нет инклюда @stm32f4xx_hal.h". Но, тем не менее, все собралось и загрузилось. Даже версию прошивки встроенного программатора обновило. Впереди долгий путь курения мануалов, протоколов, регистров и временных диаграмм. :)

  • @user-ws8lx5ji8z
    @user-ws8lx5ji8z 8 лет назад

    Спасибо. Подписался.

  • @Jensiru
    @Jensiru 8 лет назад +2

    Отличный урок! Лучше всё разжевывать новичкам так, чтобы было как можно меньше вопросов. Хоть и говорят, что HAL хуже чем SPL, но как по-мне для каждого своё.
    Сейчас же плохо, что по HAL не так много информации и примеров. Да, примеры есть на английском, но не у всех с ним "дружба":)
    Лайк однозначно за подробные объяснения своих действий!

    • @user-gp9ln4wj1r
      @user-gp9ln4wj1r 7 лет назад

      У меня плата старая, года два уже, осциллографа тоже нет. Вобщем я смирился, работаю с внутренним генератором, думаю не принципиально. ;)

    • @koliakrasnoff
      @koliakrasnoff 5 лет назад

      Подключи звуковую карту вместо осциллографа, в инете куча проектов.

    • @dazzershell
      @dazzershell 4 года назад +1

      Логический анализатор нужен будет практически всегда, сойдет и китайский клон.

  • @user-iy8kq2gh9v
    @user-iy8kq2gh9v 5 лет назад

    Спасибо, все получилось))

  • @slavaglow6933
    @slavaglow6933 5 лет назад

    Спасибо за ваш труд. Столкнулся тут с проблемой. CubeMX генерировал неправильно файл для проекта Keil. (Не прописывались пути в проекте). У меня на компьютере находится два физических диска. SSD под ОС и HDD под данные. Нормально генерирует в том диске где находится ОС. Пока генерирую в на SSD и переношу на HDD.

  • @user-yw1fr5hc9v
    @user-yw1fr5hc9v 2 года назад

    У нас работает... Доделанно тактирование по рцц цепочкам

  • @Arturikc
    @Arturikc 5 лет назад

    Не плохо!

  • @user-tr9wg3vb2q
    @user-tr9wg3vb2q 8 лет назад

    супер лайк

  • @Wip85
    @Wip85 7 лет назад +3

    Здравствуйте не могли бы сделать видео про написании кода для ПИД регулировании. Или частотный преобразователь на стм. Спасибо

  • @user-xr4bf6vx8o
    @user-xr4bf6vx8o 7 лет назад

    Скажите у вас автозаполнение функций автоматическое или надо нажисать сочетание клавишей какое то?

  • @user-gh4tc2wo5k
    @user-gh4tc2wo5k 5 лет назад

    Подскажите пожалуйста, в функции HAL_GPIO_Toggle_Pin первым аргументом выступает "GPIO_TypeDef * GPIOx", то есть указатель. При этом, в момент вызова функции в качестве аргумента передаём "GPIOD", а не адрес "&GPIOD". Почему так, можете пояснить двумя словами?

  • @vladislavpopovsky7870
    @vladislavpopovsky7870 6 лет назад +10

    Переименовали документ, теперь он называется так: Description of STM32F4 HAL and LL drivers

  • @user-yo6no3jk9l
    @user-yo6no3jk9l 4 года назад

    Здравствуйте, подскажите пожалуйста! Не подключается плата NUCLEO-F303ZE
    При сборке проекта выдает ошибку "No Section matches selector - no section to be FIRST/LAST"
    Но память чистит нормально, значит программатор исправен и контакт к памяти есть.
    Что ему не нравится? Забыл где-то поставить галочку?

  • @dmitryt2988
    @dmitryt2988 7 лет назад

    Здравствуйте! Спасибо Вам за уроки, все доходчиво и понятно, на канал подписался - учусь. Вот возник вопрос: можно ли с помощью библиотеки HAL установить значения на несколько пинов порта сразу(аналогично записи в регистр ODR) или только каждый пин по очереди устанавливать?

    • @narodstream552
      @narodstream552  7 лет назад +2

      Можно, применяя операцию "ИЛИ" ("|") в значении пина в вызове функции и перечисляя пины через эту операцию.

  • @user-yw1fr5hc9v
    @user-yw1fr5hc9v 2 года назад

    Выбираем тип

  • @statstopfinish
    @statstopfinish 7 лет назад +2

    Что-то не понял одну вещь. Прошил МК через стлинк , отключаю от программатора , включаю мк, но программа не запускается , только после нажатия ресет. Вроде такого не было, прошивал девайс и он работал, а тут без ресета программа не стартует

  • @olegsidorovich2639
    @olegsidorovich2639 5 лет назад

    как организовать подсчет нажатий синей кнопки на этой плате?

  • @elyakas78
    @elyakas78 3 года назад +1

    Здравствуйте, скачал CUBE с официального сайта, в папке нет установочного файла!!!что делать?

  • @retro55i
    @retro55i 7 лет назад

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

    • @narodstream552
      @narodstream552  7 лет назад

      retro55i никогда не надо выбирать отладочные платы, в последних уроках я оъяснял почему

  • @user-il1ci1mo8m
    @user-il1ci1mo8m 4 года назад +1

    Добрый день, спасибо за Ваш труд. У меня вопрос: подскажите, пожалуйста, как в CubeMX настроить debug (SWDIO, SWCLK) для микроконтроллера STM32H750VBT6. В разделе SYS (там, где я настраивал эти выводы для других МК) написано, что нет параметров для настройки. Заранее спасибо

    • @dazzershell
      @dazzershell 4 года назад

      Ваш контроллер, как мне кажется, из самых последних и топовых, я слышал они добавили какой-то более быстрый интерфейс отладки, но вроде старый SWD остался.

    • @user-il1ci1mo8m
      @user-il1ci1mo8m 4 года назад

      @@dazzershell Уже разобрался, cube mx обновился и настройки очутились в другой вкладке)))

  • @barkas2589
    @barkas2589 3 года назад

    Что бы запустить прогу на STM32F411 нужно в CUBE в SYS->debug выставить Serial Wire.

    • @user-me1bw8nk6p
      @user-me1bw8nk6p 2 года назад

      Это отладка. Для этой работы пока что не нужна

  • @user-es3wc7ov7q
    @user-es3wc7ov7q 5 лет назад

    Подскажите имеет ли смысл покупка Nucleo? Discovery, или можно ограничиться (для начала ) китайской платой на базе f103. Либо лучше начинать с семейства f4xx.Спасибо

    • @narodstream552
      @narodstream552  5 лет назад

      Смотря какие задачи стоят. Nucleo и Discovery дороже, но удобнее, так как там встроенный ST-Link и ряд готовых примеров в репозитории. Тем не менее F103, как показала практика тоже не плох, особенно в отношении Цена/Качество по сравнению с аналогичными представителями других компаний.

  • @AleksejKirichenko
    @AleksejKirichenko 8 лет назад +2

    доброго времени суток а можете рассказать про вот эту микросхему MAX378CPE

    • @narodstream552
      @narodstream552  8 лет назад +1

      +K.A.V MAKAR Это вроде аналоговый мультиплексор.
      Тут даташит, в нем все рассказано pdf1.alldatasheet.com/datasheet-pdf/view/73232/MAXIM/MAX378CPE.html

  • @user-yw1fr5hc9v
    @user-yw1fr5hc9v 2 года назад

    А ложки у ворк бенча я перейду к ворк бенчу с вашего позволения он же жклипс три танкиста

  • @dj_granderzplay7363
    @dj_granderzplay7363 6 лет назад

    А на СТМ8 также ?

  • @mikestarwhite9594
    @mikestarwhite9594 6 лет назад +1

    И все-таки. Достаточно ли завершенный продукт этот ĥàĺ, чтобы просто брать и использовать его без оглядки? В интернете его не хвалят.

    • @narodstream552
      @narodstream552  6 лет назад

      Да мы вроде с оглядкой используем. И вот так уже больше двух лет.

  • @ZetsAlex
    @ZetsAlex 5 лет назад

    Где можно скачать документашку по HAL? На сайте ST она не ищется, поиском в интернете тоже не особо

    • @narodstream552
      @narodstream552  5 лет назад +1

      Если Вас интересует именно документация к серии F4, то вот последняя
      www.st.com/content/ccc/resource/technical/document/user_manual/2f/71/ba/b8/75/54/47/cf/DM00105879.pdf/files/DM00105879.pdf/jcr:content/translations/en.DM00105879.pdf

    • @ZetsAlex
      @ZetsAlex 5 лет назад

      @@narodstream552 Спасибо!!

  • @karenaghlamazyan5561
    @karenaghlamazyan5561 7 лет назад +2

    Здравствуйте, у меня проблема с скачиванию пакета. Скачивает и дает следующую ошибку - These Files have problem during Dowbload: stm32cube_fw_f4_v1130.zip (Problem during download), есть другой вариант прикрепить этот файл к проекту. У меня есть отдельный ?

    • @dankor2803
      @dankor2803 7 лет назад

      Свободное место на диске проверь.

    • @dankor2803
      @dankor2803 7 лет назад

      Можно скачать отдельно на www.st.com/en/development-tools/stm32cubemx.html с закладки EMBEDDED SOFTWARE

    • @MrGoblinh
      @MrGoblinh 7 лет назад

      У меня такая же проблема. Нашел выход?

  • @user-hc1qe1xh7s
    @user-hc1qe1xh7s 7 лет назад

    Камень не стартует от внешнего кварца. HELP!!!

  • @user-yw1fr5hc9v
    @user-yw1fr5hc9v 2 года назад

    Правильная установка

  • @Shef-Il
    @Shef-Il 6 лет назад

    здравствуйте, на первых же шагах возникла проблема, не знаю куда смотреть. все сделал как по инструкции(использую stm32l476DISCOVERY), функцией "HAL_GPIO_TogglePin(GPIOB,LD4_Pin);" пытаюсь поморгать ледами(LD4_Pin и LD5_Pin), все компелируется и прошивается без проблем и без ошибок, но после запуска ничего не происходит и светодиоды не моргают, если остановить кнопкой STOP, я вижу что программа бежит внутри цикла "while(1)" в этой функции :
    void _Error_Handler(char *file, int line)
    {
    /* USER CODE BEGIN Error_Handler_Debug */
    /* User can add his own implementation to report the HAL error return state */
    while(1)
    {
    }
    /* USER CODE END Error_Handler_Debug */
    }
    ______________________________
    Что я не так делаю? спасибо!

    • @Shef-Il
      @Shef-Il 6 лет назад

      в дисасемблере я увидел что вызов идет из функции "void SystemClock_Config(void)" от сюда:
      if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
      {
      _Error_Handler(__FILE__, __LINE__);
      }

    • @sergeybork3951
      @sergeybork3951 6 лет назад

      Привет, у меня возникла подобная проблема на плате stm32l152c-discovery. Если я работаю со светодиодами используя CMSIS то все работает. В проекте с HAL ничего не получается:(

  • @artemxr6505
    @artemxr6505 6 лет назад

    Очень удобно, но очень затратно по памяти. У меня код занял почти 4кБ памяти. :(

    • @narodstream552
      @narodstream552  6 лет назад

      Для современных контроллеров версий F7 и H7 это не затратно

  • @ond23
    @ond23 6 лет назад

    Help help help, помогите пожалуйста попытался повторить урок, светодиод заморгал, но отладчик перестал видеть контроллер. Полагаю потому что в Cube MX не поставил галочку на модуле отладки. У меня контроллер STM32F103C6T6 на синей плате китайская ардуина на STM32, и китайский отладчик ST-LINK

    • @AVRshik
      @AVRshik 6 лет назад

      Решили проблему?

    • @ivanrusev2270
      @ivanrusev2270 5 лет назад

      не пытайтесь повторить пишите своё

    • @dazzershell
      @dazzershell 4 года назад

      В опциях отладчика поставить галочку "соединение при нажатом ресет" кажется. Можно еще джампер Бут 0 перекинуть на 3 вольта, тогда МК будет загружать бутлоадер, ресет станет доступным и МК можно будет прошить с программатора, потом не забудьте бут 0 вернуть на землю.

  • @user-yw1fr5hc9v
    @user-yw1fr5hc9v 2 года назад

    И зайти в эту вкладку

  • @statstopfinish
    @statstopfinish 8 лет назад

    Возникла не понятная проблема, программировал в Keil5 используя SPL , проект прошивался и отлаживался ST- LINK нормально , попробовал сегодня STM32Cube с HAL. Сделал тестовую программку , прошил, заработало. Понравилось. Но при попытке повторно прошить , программа начала ругаться что не видит девайса , прошиваться контроллер начал только после удержания ресета а затем нажатия прошить и отпустить его. Но отладка не работает. сразу сыпятся ошибки . Прошиваю старый проект сделанный на SPL , все прошивается и отлаживается отлично без всяких ресетов. Думал проблема в настройках проекта, зашел в настройки Debug , вроде все выставил так как и в проекте с SPL , но толку нет,проект с использованием STM32Cube и HAL шьется только через ресет, отладка не работает . Еще хочу уточнить что от ST-Link к моей плате ресет не подключен. Может в этом проблема ,но программы написанные с использованием SPL шьются и отлаживаются отлично. Скорей всего я что то упустил в настройках или нужно изменить какие-то параметры в программе . Но увы , что менять не знаю. Надеюсь на вашу помощь. Уж больно мне STm32Cube и HAL понравились.Автору видео спасибо за уроки.

    • @narodstream552
      @narodstream552  8 лет назад

      А контроллер какой?

    • @statstopfinish
      @statstopfinish 8 лет назад

      Контроллер STM32F103VET6. плата miniSTM32F103

    • @narodstream552
      @narodstream552  8 лет назад +1

      ааа, это известное дело. Cube так нехорошо с 1 серией делает. Лечим вот так:
      Смотрим внимательно вот отсюда ruclips.net/video/vjuE59snpQc/видео.htmlm29s

    • @statstopfinish
      @statstopfinish 8 лет назад

      Спасибо вам. Помогли ваши советы . Теперь все работает как нужно. У вас отличные уроки. Хотел у вас спросить, а вы планируете выпустить уроки для STM32, где будет объясняться работа с различными микросхемами и модулей? Типа- внешняя флеш память W25Xxx, внешний еепром AT24Cxx, wifi esp8266, DS18B20. Хотелось бы увидеть более практическое применение МК для работы со стандартными модулями и микросхемами . Еще раз спасибо за ваш труд.

    • @narodstream552
      @narodstream552  8 лет назад

      Vadim Z Вам также спасибо за Ваши просмотры, за Ваше внимание к каналу.
      Насчет 24 серии, то там всё просто, у меня есть урок по прошивке внешнего EEPROM. На stm если нет, то может когда-то и сделаю. А вот для 25 серии (т.к. это уже Flash) требуется желательно аппаратная поддержка QSPI, которая появилась только у 7 серии МК STM32. У меня есть 746 плата в которой есть данный интерфейс, но фишка в том что в данной плате он рассчитан в основном на программирование флеш-памяти, которая запаяна на плату. Выход наружу я нашел только для 4х лапок данных, а вот для синхронизации и чип енейбла пока нет. Мой вопрос на форуме STM по этому поводу висит уже давно. Пока не ответил никто.

  • @YuriyIY
    @YuriyIY 8 лет назад

    Интересно, а у меня почему-то автодополнение при использовании HAL не работает.

    • @narodstream552
      @narodstream552  8 лет назад

      Какое автодополнение?

    • @YuriyIY
      @YuriyIY 8 лет назад

      Начинаешь писать имя функции, кейл выкидывает менюшку с вариантами. IntelliSense вроде называется.

    • @narodstream552
      @narodstream552  8 лет назад

      +Юрий Яремчук а, ну да, вспомнил. У меня тоже не всегда работает. Но я ничего такого не настраивал.

    • @YuriyIY
      @YuriyIY 8 лет назад

      Жалко, ну лан, пока не критично. Потом победю мож. :-)

    • @MrBlackHawk888
      @MrBlackHawk888 7 лет назад +1

      Автозаполение функций: Edit -> Configuration -> Text completion -> Блок опцион-меню "Show Code Completion List for", в котором нужно всё потыкать.

  • @user-yw1fr5hc9v
    @user-yw1fr5hc9v 2 года назад

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

  • @dmitriyfilatov8658
    @dmitriyfilatov8658 4 года назад

    HAL [hæl]

  • @user-yw1fr5hc9v
    @user-yw1fr5hc9v 2 года назад

    Ну и и так кто нам сказали бросал я в бой на все это дело...

  • @user-yw1fr5hc9v
    @user-yw1fr5hc9v 2 года назад

    Леха леха его зовут

  • @user-yw1fr5hc9v
    @user-yw1fr5hc9v 2 года назад

    Кнопка сходить в магазин

  • @ybpvin
    @ybpvin 5 лет назад +1

    Не пойму зачем разработчик так всё усложнил ? Я программировал в Mplab, Avr studio, arduino, все просто, а тут велосипед.

  • @user-bm2yx2nh4l
    @user-bm2yx2nh4l Год назад

    Ни фига мы не познакомились, Сусанин

  • @user-gp9ln4wj1r
    @user-gp9ln4wj1r 7 лет назад

    Камень не стартует от внешнего кварца :( , может кто нибудь сталкивался?

    • @user-hc1qe1xh7s
      @user-hc1qe1xh7s 7 лет назад

      Тоже уже 2 дня над этим мучаюсь. От внутреннего источника запускается, от внешнего - нет.

    • @user-gp9ln4wj1r
      @user-gp9ln4wj1r 7 лет назад

      Я уже и кварц менял и кондеры толку ноль.

    • @user-hc1qe1xh7s
      @user-hc1qe1xh7s 7 лет назад

      может что с платами накосячили производители? Что то мы с вами по времени совпадаем. Я купил 2 недели назад в Чип и Дип. Мне посоветовали осцилографом посмотреть, но у меня нету. Еще тут forum.easyelectronics.ru/viewtopic.php?f=35&t=17610 отладчиком в Кейле предлагают посмотреть. Буду думать. У вас тоже Keil? У Меня Keil 5. Как и CubeMX скачал и установил совсем недавно.

    • @user-hc1qe1xh7s
      @user-hc1qe1xh7s 7 лет назад

      Как отладчиком посмотреть? Мб в каком цикле застревает после инициализации RCC. Сразу станет понятно МК идентифицирует, что кварца нет или .... (так мне посоветовали на киберфоруме. Знать бы еще как )) Может кто поможет?).

    • @user-gp9ln4wj1r
      @user-gp9ln4wj1r 7 лет назад

      Если разберетесь отпишитесь пожалуйста.

  • @user-yw1fr5hc9v
    @user-yw1fr5hc9v 2 года назад

    Переферия... Частота... Мигания

  • @user-yw1fr5hc9v
    @user-yw1fr5hc9v 2 года назад

    Много ножек...