Программирование МК 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
Спасибо за ваши труды. Все уроки понятны и полезны!
А мне как новичку HAL понятнее. Спасибо за ваши уроки. Смотрим дальше.
На 1.5х и вправду оч удобно смотреть, я думал в коментах стебут.
Спасибо за урок)
И Вам спасибо за интерес к ресурсу. Ну это ранние уроки. Сейчас-то моя речь разогналась, так что скоро замедляться придется.
Я думал усну. Почитал коменты, реально нужно x1.5. Кроме того, что спасибо и всё по теме буду на ночь включать, чтоб крепче уснуть.
Спасибо! Очень классно объясняете , пока понятно :)
Большое Вам спасибо за Вашу работу!
Спасибо за ваши уроки...
спасибо огромное за лекцию
Очень все подробно и понятно!!!!
Ура, у меня получилось повторить ваш урок после 7 лет перерыва. Спасибо за этот цикл уроков. Все получилось с первого раза. Единственное, у меня в main.c нет инклюда @stm32f4xx_hal.h". Но, тем не менее, все собралось и загрузилось. Даже версию прошивки встроенного программатора обновило. Впереди долгий путь курения мануалов, протоколов, регистров и временных диаграмм. :)
Спасибо. Подписался.
Отличный урок! Лучше всё разжевывать новичкам так, чтобы было как можно меньше вопросов. Хоть и говорят, что HAL хуже чем SPL, но как по-мне для каждого своё.
Сейчас же плохо, что по HAL не так много информации и примеров. Да, примеры есть на английском, но не у всех с ним "дружба":)
Лайк однозначно за подробные объяснения своих действий!
У меня плата старая, года два уже, осциллографа тоже нет. Вобщем я смирился, работаю с внутренним генератором, думаю не принципиально. ;)
Подключи звуковую карту вместо осциллографа, в инете куча проектов.
Логический анализатор нужен будет практически всегда, сойдет и китайский клон.
Спасибо, все получилось))
Поздравляю!
Спасибо за ваш труд. Столкнулся тут с проблемой. CubeMX генерировал неправильно файл для проекта Keil. (Не прописывались пути в проекте). У меня на компьютере находится два физических диска. SSD под ОС и HDD под данные. Нормально генерирует в том диске где находится ОС. Пока генерирую в на SSD и переношу на HDD.
У нас работает... Доделанно тактирование по рцц цепочкам
Не плохо!
супер лайк
Здравствуйте не могли бы сделать видео про написании кода для ПИД регулировании. Или частотный преобразователь на стм. Спасибо
Скажите у вас автозаполнение функций автоматическое или надо нажисать сочетание клавишей какое то?
Подскажите пожалуйста, в функции HAL_GPIO_Toggle_Pin первым аргументом выступает "GPIO_TypeDef * GPIOx", то есть указатель. При этом, в момент вызова функции в качестве аргумента передаём "GPIOD", а не адрес "&GPIOD". Почему так, можете пояснить двумя словами?
Переименовали документ, теперь он называется так: Description of STM32F4 HAL and LL drivers
Здравствуйте, подскажите пожалуйста! Не подключается плата NUCLEO-F303ZE
При сборке проекта выдает ошибку "No Section matches selector - no section to be FIRST/LAST"
Но память чистит нормально, значит программатор исправен и контакт к памяти есть.
Что ему не нравится? Забыл где-то поставить галочку?
Здравствуйте! Спасибо Вам за уроки, все доходчиво и понятно, на канал подписался - учусь. Вот возник вопрос: можно ли с помощью библиотеки HAL установить значения на несколько пинов порта сразу(аналогично записи в регистр ODR) или только каждый пин по очереди устанавливать?
Можно, применяя операцию "ИЛИ" ("|") в значении пина в вызове функции и перечисляя пины через эту операцию.
Выбираем тип
Что-то не понял одну вещь. Прошил МК через стлинк , отключаю от программатора , включаю мк, но программа не запускается , только после нажатия ресет. Вроде такого не было, прошивал девайс и он работал, а тут без ресета программа не стартует
как организовать подсчет нажатий синей кнопки на этой плате?
Здравствуйте, скачал CUBE с официального сайта, в папке нет установочного файла!!!что делать?
При старте куба не обязательно выбирать тип процессора, а можно выбрать целую оценочную плату из списка, там будет уже все настроено
retro55i никогда не надо выбирать отладочные платы, в последних уроках я оъяснял почему
Добрый день, спасибо за Ваш труд. У меня вопрос: подскажите, пожалуйста, как в CubeMX настроить debug (SWDIO, SWCLK) для микроконтроллера STM32H750VBT6. В разделе SYS (там, где я настраивал эти выводы для других МК) написано, что нет параметров для настройки. Заранее спасибо
Ваш контроллер, как мне кажется, из самых последних и топовых, я слышал они добавили какой-то более быстрый интерфейс отладки, но вроде старый SWD остался.
@@dazzershell Уже разобрался, cube mx обновился и настройки очутились в другой вкладке)))
Что бы запустить прогу на STM32F411 нужно в CUBE в SYS->debug выставить Serial Wire.
Это отладка. Для этой работы пока что не нужна
Подскажите имеет ли смысл покупка Nucleo? Discovery, или можно ограничиться (для начала ) китайской платой на базе f103. Либо лучше начинать с семейства f4xx.Спасибо
Смотря какие задачи стоят. Nucleo и Discovery дороже, но удобнее, так как там встроенный ST-Link и ряд готовых примеров в репозитории. Тем не менее F103, как показала практика тоже не плох, особенно в отношении Цена/Качество по сравнению с аналогичными представителями других компаний.
доброго времени суток а можете рассказать про вот эту микросхему MAX378CPE
+K.A.V MAKAR Это вроде аналоговый мультиплексор.
Тут даташит, в нем все рассказано pdf1.alldatasheet.com/datasheet-pdf/view/73232/MAXIM/MAX378CPE.html
А ложки у ворк бенча я перейду к ворк бенчу с вашего позволения он же жклипс три танкиста
А на СТМ8 также ?
И все-таки. Достаточно ли завершенный продукт этот ĥàĺ, чтобы просто брать и использовать его без оглядки? В интернете его не хвалят.
Да мы вроде с оглядкой используем. И вот так уже больше двух лет.
Где можно скачать документашку по HAL? На сайте ST она не ищется, поиском в интернете тоже не особо
Если Вас интересует именно документация к серии 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
@@narodstream552 Спасибо!!
Здравствуйте, у меня проблема с скачиванию пакета. Скачивает и дает следующую ошибку - These Files have problem during Dowbload: stm32cube_fw_f4_v1130.zip (Problem during download), есть другой вариант прикрепить этот файл к проекту. У меня есть отдельный ?
Свободное место на диске проверь.
Можно скачать отдельно на www.st.com/en/development-tools/stm32cubemx.html с закладки EMBEDDED SOFTWARE
У меня такая же проблема. Нашел выход?
Камень не стартует от внешнего кварца. HELP!!!
Правильная установка
здравствуйте, на первых же шагах возникла проблема, не знаю куда смотреть. все сделал как по инструкции(использую 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 */
}
______________________________
Что я не так делаю? спасибо!
в дисасемблере я увидел что вызов идет из функции "void SystemClock_Config(void)" от сюда:
if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
{
_Error_Handler(__FILE__, __LINE__);
}
Привет, у меня возникла подобная проблема на плате stm32l152c-discovery. Если я работаю со светодиодами используя CMSIS то все работает. В проекте с HAL ничего не получается:(
Очень удобно, но очень затратно по памяти. У меня код занял почти 4кБ памяти. :(
Для современных контроллеров версий F7 и H7 это не затратно
Help help help, помогите пожалуйста попытался повторить урок, светодиод заморгал, но отладчик перестал видеть контроллер. Полагаю потому что в Cube MX не поставил галочку на модуле отладки. У меня контроллер STM32F103C6T6 на синей плате китайская ардуина на STM32, и китайский отладчик ST-LINK
Решили проблему?
не пытайтесь повторить пишите своё
В опциях отладчика поставить галочку "соединение при нажатом ресет" кажется. Можно еще джампер Бут 0 перекинуть на 3 вольта, тогда МК будет загружать бутлоадер, ресет станет доступным и МК можно будет прошить с программатора, потом не забудьте бут 0 вернуть на землю.
И зайти в эту вкладку
Возникла не понятная проблема, программировал в Keil5 используя SPL , проект прошивался и отлаживался ST- LINK нормально , попробовал сегодня STM32Cube с HAL. Сделал тестовую программку , прошил, заработало. Понравилось. Но при попытке повторно прошить , программа начала ругаться что не видит девайса , прошиваться контроллер начал только после удержания ресета а затем нажатия прошить и отпустить его. Но отладка не работает. сразу сыпятся ошибки . Прошиваю старый проект сделанный на SPL , все прошивается и отлаживается отлично без всяких ресетов. Думал проблема в настройках проекта, зашел в настройки Debug , вроде все выставил так как и в проекте с SPL , но толку нет,проект с использованием STM32Cube и HAL шьется только через ресет, отладка не работает . Еще хочу уточнить что от ST-Link к моей плате ресет не подключен. Может в этом проблема ,но программы написанные с использованием SPL шьются и отлаживаются отлично. Скорей всего я что то упустил в настройках или нужно изменить какие-то параметры в программе . Но увы , что менять не знаю. Надеюсь на вашу помощь. Уж больно мне STm32Cube и HAL понравились.Автору видео спасибо за уроки.
А контроллер какой?
Контроллер STM32F103VET6. плата miniSTM32F103
ааа, это известное дело. Cube так нехорошо с 1 серией делает. Лечим вот так:
Смотрим внимательно вот отсюда ruclips.net/video/vjuE59snpQc/видео.htmlm29s
Спасибо вам. Помогли ваши советы . Теперь все работает как нужно. У вас отличные уроки. Хотел у вас спросить, а вы планируете выпустить уроки для STM32, где будет объясняться работа с различными микросхемами и модулей? Типа- внешняя флеш память W25Xxx, внешний еепром AT24Cxx, wifi esp8266, DS18B20. Хотелось бы увидеть более практическое применение МК для работы со стандартными модулями и микросхемами . Еще раз спасибо за ваш труд.
Vadim Z Вам также спасибо за Ваши просмотры, за Ваше внимание к каналу.
Насчет 24 серии, то там всё просто, у меня есть урок по прошивке внешнего EEPROM. На stm если нет, то может когда-то и сделаю. А вот для 25 серии (т.к. это уже Flash) требуется желательно аппаратная поддержка QSPI, которая появилась только у 7 серии МК STM32. У меня есть 746 плата в которой есть данный интерфейс, но фишка в том что в данной плате он рассчитан в основном на программирование флеш-памяти, которая запаяна на плату. Выход наружу я нашел только для 4х лапок данных, а вот для синхронизации и чип енейбла пока нет. Мой вопрос на форуме STM по этому поводу висит уже давно. Пока не ответил никто.
Интересно, а у меня почему-то автодополнение при использовании HAL не работает.
Какое автодополнение?
Начинаешь писать имя функции, кейл выкидывает менюшку с вариантами. IntelliSense вроде называется.
+Юрий Яремчук а, ну да, вспомнил. У меня тоже не всегда работает. Но я ничего такого не настраивал.
Жалко, ну лан, пока не критично. Потом победю мож. :-)
Автозаполение функций: Edit -> Configuration -> Text completion -> Блок опцион-меню "Show Code Completion List for", в котором нужно всё потыкать.
Стоп. Светиться красным... Спрашивал где.. Протестует от меня и отобрал дома кто то ложки
HAL [hæl]
Ну и и так кто нам сказали бросал я в бой на все это дело...
Леха леха его зовут
Кнопка сходить в магазин
Не пойму зачем разработчик так всё усложнил ? Я программировал в Mplab, Avr studio, arduino, все просто, а тут велосипед.
Это с непривычки.
Ни фига мы не познакомились, Сусанин
Камень не стартует от внешнего кварца :( , может кто нибудь сталкивался?
Тоже уже 2 дня над этим мучаюсь. От внутреннего источника запускается, от внешнего - нет.
Я уже и кварц менял и кондеры толку ноль.
может что с платами накосячили производители? Что то мы с вами по времени совпадаем. Я купил 2 недели назад в Чип и Дип. Мне посоветовали осцилографом посмотреть, но у меня нету. Еще тут forum.easyelectronics.ru/viewtopic.php?f=35&t=17610 отладчиком в Кейле предлагают посмотреть. Буду думать. У вас тоже Keil? У Меня Keil 5. Как и CubeMX скачал и установил совсем недавно.
Как отладчиком посмотреть? Мб в каком цикле застревает после инициализации RCC. Сразу станет понятно МК идентифицирует, что кварца нет или .... (так мне посоветовали на киберфоруме. Знать бы еще как )) Может кто поможет?).
Если разберетесь отпишитесь пожалуйста.
Переферия... Частота... Мигания
Много ножек...