В уроке установим программное обеспечение, необходимое для дальнейшей работы. Проверим в комплексе его работу с отладочным модулем.
Предыдущий урок Список уроков Следующий урок
Один из самых важных вопросов при освоении сложных микроконтроллеров подобно STM32 – выбор среды разработки (IDE).
Существует большое количество интегрированных средств разработки для микроконтроллеров STM32.
Мы живем в реальном мире, поэтому, прежде всего, я разделил бы их на платные и бесплатные. Логично предположить, что платные обеспечивают больше функций, работают стабильнее, лучше поддерживаются, генерируют компактный код и т.п.
Но вряд ли кто-то из моих читателей согласится выложить 8000 евро за среду разработки. Хотя в платных IDE, как правило, есть бесплатные варианты с ограничением по размеру кода. Но не хочется подобно Дамоклу ждать, когда оборвется волос, на котором подвешен меч над твоей головой. Т.е. в самый неподходящий момент получить сообщение, о том, что остальная часть памяти недоступна.
Но есть приятное исключение. Платная интегрированная среда Atollic TrueStudio с прошлого года стала бесплатной. Производитель STM32 компания STMicroelectronics в 2018 году купила фирму Atollic и сделала эту IDE бесплатной.
От добра добра не ищут. Я выбрал в качестве среды разработки IDE Atollic TrueStudio. Она:
- бесплатная;
- нет ограничений;
- разработчик поддерживает ее и обещает поддерживать в будущем;
- устанавливается ”из коробки”;
- прекрасно работает.
Итак. Нам необходимо установить следующее программное обеспечение:
- Интегрированная среда разработки Atollic TrueStudio.
- Пакет STM32CubeMX – программа создания проекта, визуальной конфигурации микроконтроллера.
- Flash Loader Demonstrator - программа для прошивки микроконтроллеров через системный загрузчик.
- Программа – терминал COM-порта компьютера, аналог Монитора последовательного порта Arduino IDE. Необходима для отладки программной и аппаратной частей системы. Я выбрал CoolTerm, но подобных программ очень много. Если не нравится мой выбор, используйте другую.
Давайте все это последовательно установим.
Atollic TrueStudio.
Переходим по ссылке https://atollic.com/resources/download/.
Выбираем ОС. Заполняем поля.
Загружаем последнюю версию по ссылке.
Запускаем полученный файл-инсталлятор:
Atollic_TrueSTUDIO_for_STM32_windows_x86_v9.2.0_20181203-0921.exe
Дальше следуем подсказкам инсталлятора.
STM32CubeMX
Идем по ссылке www.st.com/en/development-tools/stm32cubemx.html.
Регистрируемся, подтверждаем регистрацию по электронной почте.
В самом низу страницы загружаем архивный файл по ссылке Get Software.
Разархивируем скачанный файл во временную папку. Запускаем файл SetupSTM32CubeMX-5.0.1.exe.
Возможно, потребуется установка Java. Ссылка для установки откроется сама.
После загрузки и установки Java надо опять запустить SetupSTM32CubeMX-5.0.1.exe и довести установку до конца.
Flash Loader Demonstrator
Ссылка на страницу загрузки www.st.com/en/development-tools/flasher-stm32.html.
Ссылка для самой загрузки (Get Software ) внизу страницы.
Разархивируем во временную папку, запускаем flash_loader_demo_v2.8.0.exe.
Следуем подсказкам инсталлятора
CoolTerm.
Можно загрузить по ссылке http://freeware.the-meiers.org.
Устанавливать не надо. Разархивировать в рабочую папку. Запускается исполняемый файл CoolTerm.exe.
В итоге у нас 4 программы – 4 ярлыка на рабочем столе.
Проверка работы программного обеспечения в комплексе с отладочной платой.
Программное обеспечение мы установили. В прошлом уроке к отладочной плате STM32103C8T6 добавили компоненты, позволяющие загружать программу во FLASH микроконтроллера.
Давайте проверим, как это все работает. Не будем особенно вдумываться, разбираться, что делаем. Просто формально выполним определенные действия.
Хотя работа с конфигуратором STM32CubeMX настолько проста и интуитивно понятна, что мы сразу научимся работать с его интерфейсом, а в регистрах и схемах микроконтроллера будем разбираться потом.
Цель – проверить, что:
- STM32CubeMX создает проект и задает правильную конфигурацию ресурсов микроконтроллера.
- IDE Atollic TrueStudio открывает проект, позволяет его редактировать и создает загрузочный файл.
- Flash Loader Demonstrator – загружает программу в микроконтроллер.
- Мы правильно припаяли к отладочной плате преобразователь интерфейсов и кнопки.
- Работает сама отладочная плата.
Разработаем и проверим программу, которая мигает светодиодом платы на 13 выводе с частотой 2 раза в секунду.
Конфигурация и создание проекта.
Создаем папку для наших проектов. У меня это d:\STM32\Projects\Lessons\Lesson3.
Запускаем STM32CubeMX.
Ниже надписи New Project выбираем ACCESS TO MCU SELECTOR, что означает выбор типа контроллера.
При первом запуске программа загрузит необходимые файлы из Интернета и откроется окно выбора микроконтроллера.
Выберем STM32F103C8.
В верхней части страницы появится информация о выбранном микроконтроллере, можно будет загрузить техническую документацию.
Нажимаем кнопку Start Project в правом верхнем углу.
Появляется окно конфигуратора.
Все интуитивно понятно. Справа изображение микроконтроллера с интерактивными выводами. Слева – регистры микроконтроллера, состояние которых мы собственно и хотим установить.
Желтым цветом показаны выводы питания, остальные пока серые. Зеленеть они будут по мере конфигурации портов.
Настраиваем систему тактирования микроконтроллера.
Открываем закладку System Core. Выбираем RCC.
Источником тактирования задаем высокоскоростной генератор на кварцевом резонаторе High Speed Clock (HSE) -> Crystal/Ceramic Resonator .
Два вывода на микросхеме стали зелеными. Мы их заняли под выводы для кварцевого резонатора.
Выбираем в верхнем горизонтальном меню Clock Configuration (Конфигурация тактирования).
Здесь интерактивная схема системы тактирования, в которой можно управлять коммутаторами, задавать делители частоты. При этом нет необходимости искать в технической документации назначение регистров, их форматы и т.п.
Коммутаторы PLL Source Mux и System Clock Mux устанавливаем на нижние входы.
Умножитель *PLL Mul задаем равным 9.
В результате на схеме видно, что основная частота тактирования 72 мГц (окошко HCLK).
С такой же частотой работает ядро микроконтроллера (окно FCLK).
Красным цветом отмечено, что какое-то устройство (APB1 Prescaler) работает на недопустимо высокой частоте. Есть предупреждение, что максимальная частота 36 мГц.
Давайте выберем для него делитель равный 2, и предупреждение исчезнет.
Остается настроить режим порта для вывода 13. К нему подключен светодиод, которым мы собираемся мигать.
Возвращаемся в Pinout & Configuration. Справа появляется изображение микроконтроллера.
Правой кнопкой мыши нажимаем на вывод 13, назначаем его на выход (GPIO_Output).
Вывод стал зеленым.
В закладках слева выбираем GPIO (порты общего назначения).
Правее появляется строчка с режимом вывода 13.
Выбираем ее правой кнопкой мыши. В нижней строчке режимов вывода User Label пишем LED13. Это мы задали имя переменной для вывода. Через него в программе будет происходить обращение к выводу 13.
На этом конфигурация закончена. Не заглядывая в техническую документацию, мы за минуту выставили нужные нам режимы тактирования и вывода порта.
Заполняем данные для сохранения проекта. В верхнем меню выбираем Project Manager.
Указываем:
- Имя проекта.
- Папку сохранения проекта.
- Обязательно выбираем TrueSTUDIO в поле Toolchain IDE.
Нажимаем GENERATE CODE.
При первом запуске STM32CubeMX загружает из Интернета необходимые файлы. Разрешаем загрузку.
Закрываем программу.
В указанной папке появился проект Lesson3_1.
Разработка программы, компиляция.
Запускаем Atollic TrueStudio. Везде пустые поля.
Открываем наш проект File -> Open Projects from File System…
Указываем путь к проекту.
Нажимаем Finish.
В поле Project Explorer появился наш проект.
Разворачиваем.
Файлы с которыми мы будем сейчас работать в папке Scr.
Два раза кликаем правой кнопкой мыши по main.c и наш основной файл с исходным текстом появляется в среднем окне IDE.
Попробуем компилировать проект.
Нажимаем Project -> Build Project или молоточек в панели инструментов.
Смотрим на поле Problems (Проблемы) внизу экрана.
У меня сообщений об ошибках нет, значит, проект компилировался нормально.
Исходный текст программы.
В отличие от Ардуино структура программы STM32 типичная для языка C. Всегда есть функция main() – функция, которая вызывается при запуске программы. Часто внутри этой функции расположена вся программа, за исключением тел других функций.
Просматриваем программу.
#include "main.h" – заголовочный файл.
void SystemClock_Config(void);
static void MX_GPIO_Init(void);
Прототипы функций. В отличие от Ардуино в классическом я зыке C каждая функция, в том числе, которую объявляет программист, должна иметь прототип. Т.е. должна быть объявлена, как переменная. Прототип содержит имя функции, возвращаемое значение и аргументы. Должен быть объявлен до первого вызова функции.
int main(void) {
Функция main - начало выполнения программы.
HAL_Init();
SystemClock_Config();
MX_GPIO_Init();
Функции инициализации регистров микроконтроллера. В них трансформировались наши действия по заданию конфигурации в программе STM32CubeMX.
И дальше нам в проекте конфигуратор подставил бесконечный цикл - аналог функции loop() в системе Ардуино.
while (1)
{
}
В него мы и вставим команды управления светодиодом.
Текст программы изобилует блоками комментариев подобно этому.
/* USER CODE BEGIN WHILE */
/* USER CODE END WHILE */
Дело в том, что исходный текст создала программа STM32CubeMX. Если захочется что-либо изменить в конфигурации микроконтроллера с помощью STM32CubeMX, то конфигуратор может испортить текст, внесенный программистом на этапе разработки. Поэтому STM32CubeMX выделяет блоки, которые он не будет изменять при повторных конфигурациях. Эти блоки он отмечает строками комментариев:
/* USER CODE … */
/* USER CODE … */
Свой текст надо размещать только в таких блоках.
Сейчас нас интересует блок:
/* Infinite loop */
/* USER CODE BEGIN WHILE */
while (1)
{
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
}
/* USER CODE END 3 */
Перед
/* USER CODE END WHILE */
Вставляем инверсию светодиода с задержкой четверть секунды. Добавляем вызовы двух функций: инверсии состояния вывода и временной задержки.
/* Infinite loop */
/* USER CODE BEGIN WHILE */
while (1)
{
HAL_GPIO_TogglePin(LED13_GPIO_Port,LED13_Pin);
HAL_Delay(250);
/* USER CODE END WHILE */
Заметьте, что мы указали при конфигурации название вывода для светодиода LED13. Теперь в программе мы обращаемся к нему через имена LED13_GPIO_Port, LED13_Pin.
Компилируем проект.
Ошибок нет.
Можно закрыть проект.
Скачать архив проекта можно по ссылке:
Теперь надо загрузить исполняемый код во FLASH микроконтроллера.
Прошивка FLASH микроконтроллера.
Результат компиляции оказался в HEX-файле в папке Debug. В моем случае:
d:\STM32\Projects\Lessons\Lesson3\Lesson3_1\Debug\Lesson3_1.hex
Именно этот файл будем прошивать в микроконтроллер.
Подключаем к компьютеру мост USB-UART. Перед этим должен быть установлен драйвер моста. Как это сделать, можно посмотреть по ссылкам PL2303 и CH340.
Преобразователь интерфейсов обязательно должен быть подключен к компьютеру до запуска программы загрузки FLASH, иначе программа не увидит виртуальный порт.
Запускаем Flash loader demonstrator.
Устанавливаем номер порта.
Нажимаем и удерживаем кнопку ПРОШИВКА.
Кратковременно нажимаем кнопку СБРОС.
Давим Next.
Если на светофоре горит зеленый - еще раз Next.
Можно посмотреть информацию о микроконтроллере и размере его FLASH.
Опять давим Next.
Выбираем Download to device.
Задаем путь к нашему HEX-файлу.
Опять Next.
Происходит загрузка FLASH микроконтроллера. Выводится сообщение о результате.
У меня успешно.
Теперь можно отпустить кнопку ПРОШИВКА, и закрыть программу.
Остается нажать кнопку СБРОС и светодиод на отладочной плате начинает мигать с частотой 2 раза в секунду.
Если так, то все было сделано правильно.
В следующем уроке научимся работать с регистрами микроконтроллера, узнаем о библиотеках CMSIS и HAL.
Эдуард спасибо.
Но по сравнению с Ардуино — это день и ночь. Все слишком сложно и геморно.
Для себя открыл Teensy контроллеры от PJRC.com
Такие же удобные и простые как Ардиуновские.
Есть 8 ми битные и 32 битные.
Дело не в контроллерах а в среде программирования. STM32 тоже можно ардуинить особенно легко это делать в Platformio. Там же есть и фреймворк STM32 CUBE и MBED. Можно пользоваться каким душе угодно.
Teensy — обычные контроллеры по конским ценам.
8-битные на атмел можно взять гораздо дешевле. stm32f103 — есть поддержка в ардуино. А уж если на крутизну тянет — возьмите плату на STM32F407VGT6, стоит в пределах 700р.
https://www.ebay.com/itm/STM32F407VGT6-STM32F103C8T6-F407VET6-STM32-ARM-Minisystem-Development-CoreBoard/112987363710?hash=item1a4e92597e:m:meoMyQF8fiJYDIDnPMYBVcA
Здравствуйте всем . очень рад что сразу всё заработало. перед этим 2 месяца изучал работу с регистрами и фьюзами. тема скажу честно очень трудная. пришлось попотеть. но зато теперь смогу собирать и программировать абсолютно всё начиная от капельного орошения и инкубаторов и заканчивая беспилотниками , умным домом с видеотрансляцией по интернету для клиента и платами скажем для холодильных компрессоров с регулировкой скорости оборотов двигателя. спасибо за информацию о Teensy контроллерах и о среде программирования Platformio. изучу обязательно. полученные от дражайшего Эдуарда знания применил на практике собрал и запрограммировал капельное орошение саженцев чтобы не бегать со шлангом и вёдрами по саду а также автомойку самообслуживания с передачей смс хозяину о поступивших суммах денег. пришлось исправлять и переделывать программы работы с платами GSM. так как у нас другой протокол сообщений чем за границей, в общем переделал обработку строк. в общем огромный + за уроки. теперь я могу создавать абсолютно всё без исключения и очень этим доволен. главное для счетчиков выставляйте условие чтобы он при <0(отрицательном значении) приравнивался нулю или указывайте его как unsigned . иначе программа будет зависать на час или больше пока счетчик будет выбираться из минуса куда он попадает после переполнения. всем желаю успехов в этом деле шаг за шагом.
Привет. После Arduino и Си, откровенно завис на HAL, непривычно и непонятно. Что такое микроконтроллер знаю. Работал на i8080, ST6, MSP430 на Assembler, AVR на С. Как удалось себя перебороть?
Спасибо большое! Жду с нетерпением новых уроков, хороший курс, не бросайте его, очень понятный, современный. Хотелось бы урок по загрузки прошивки через st-link.
Спасибо за отзыв. Бросать не собираюсь, я только начал писать на эту тему.
А если я прошил контроллер ст-линком
а потом попробовал аналогично прошить в него хекс из урока
и теперь ст-линк отказывается коннектиться к контроллеру
(может всвязи с настройками кварца?)
его можно как-нибудь оживить?
Здравствуйте!
Внутренний бутлоадер испортить невозможно. Вы что-то не так делаете.
Это бывает, например, если прошивка использует ножки, которые нужны для swd. Тогда можно прошить через st-link утилиту, если установить режим «коннектиться при перезагрузке». Потом нажимаем кнопочку коннект в утилите и быстро делаем ресет кнопкой на плате. Плата перезагрузится (прошивка в этот момент не работает и swd свободен) и должно подключиться. Если не вышло с первого раза, пробуйте ещё
Во-первых, когда генерите код в CUBE, то надо установить в PINOUT CONFIGURATION —> System Core —> SYS —> Debug —> Serial Wire. Иначе по инструкции как в этом уроке сгенеренная прошивка не дает доступ к дальнейшим перепрошиваниям через ST-LINK V2 («китайский свисток»). Во-вторых, если удалось заблокировать микроконтроллер, то действуйте через прогу от производителя ST Link Utility, зажимаете RESET и жмёте законнесктиться в утилите и отпускаете RESET. Утилита получает доступ к памяти МК и теперь можете делать, что хотите. Я бы стёр эту неудачную прошивку 🙂
Проверено на опыте, ибо сам заблокировал таким образом свой CSK32F103C8T6. Автору просьба добавить этот пункт про SWD, а то люди могут забросить играться в микроконтроллером ибо он больше «не работает».
Вот спасибо.
Именно, так и есть). Спасибо, автору внимательнее нужно подходить к урокам, блин).
Проблема на одном из STM32 blue-pill.
В CUBEIDE (и в Atolic Studio) при дебаге возникает ошибка «Error in initializing ST-LINK device.
Reason: ST-LINK: Could not verify ST device! Abort connection.»
В st-link соединение проходит, hex файл пишется. Но встроенная лампочка PC13 не моргает (проект как в теме выше). На другом контакте (PB12) все работает.
Где копать?
Может светодиод сгорел на 13 ножке
спасибо, но
проблема в том что это самое не так
абсолютно тоже самое что ранее работало
контроллер работает, даже мигает, как и договаривались
вот только ст-линк к нему не коннектится
это не может быть связано с тем что мы там частоты настраивали(множители?)
вот лог ст-линк утилити
20:18:24 : ST-LINK SN : 57FF67064884525035382387
20:18:24 : V2J17S4
20:18:24 : Connected via SWD.
20:18:24 : Connection mode : Normal.
20:18:24 : Debug in Low Power mode enabled.
20:18:24 : Device ID:0x410
20:18:24 : Device flash Size : 64KBytes
20:18:24 : Device family :STM32F10xx Medium-density
20:19:22 : Flash memory erased.
20:20:45 : [Example_GPIO.bin] opened successfully.
20:20:45 : [Example_GPIO.bin] checksum : 0x00010870
20:21:21 : Memory programmed in 0s and 936ms.
20:21:21 : Verification…OK
20:21:21 : Programmed memory Checksum: 0x00010870
21:43:33 : [Lesson3_1.hex] opened successfully.
21:43:33 : [Lesson3_1.hex] checksum : 0x00046B51
21:43:55 : Memory programmed in 1s and 264ms.
21:43:55 : Verification…OK
21:43:55 : Programmed memory Checksum: 0x00046B51
21:43:56 : Disconnected from device.
21:43:56 : Connection to device is lost: check power supply and debug connection.
21:43:56 : If the target is in low power mode, please enable «Debug in Low Power mode» option from Target->settings menu.
21:44:45 : [Example_GPIO.bin] opened successfully.
21:44:45 : [Example_GPIO.bin] checksum : 0x00010870
21:44:50 : Can not connect to target!
Please select «Connect Under Reset» mode from Target->Settings menu and try again.
If you’re trying to connect to a low frequency application , please select a lower SWD Frequency mode from Target->Settings menu.
21:44:53 : No target connected
Посмотрите на форумах. Кто-то пишет, что надо укоротить кабель USB, исключить все потенциальные наводки. Пишут, что необходимо соединить выводы 1 и 19 разъема STLink.
По умолчанию в Cube SWD отключен
https://bravikov.wordpress.com/2016/11/13/stm32cubemx-%D0%BF%D0%BE-%D1%83%D0%BC%D0%BE%D0%BB%D1%87%D0%B0%D0%BD%D0%B8%D1%8E-%D0%BE%D1%82%D0%BA%D0%BB%D1%8E%D1%87%D0%B0%D0%B5%D1%82-swd-%D0%B4%D0%BB%D1%8F-f1/
помогла попытка перепрошить меняя BOOT1 и сбрасывая как полагается для usb-uart
простите если замусорил комментарии
могу за собой убрать)
Нет. Кому-то будет интересно.
т.е. boot0
не могу убрать(не удаляются)..)
Расскажите пожалуйста, как сделать, чтоб проект заливался через ST-link? Как описал sergpu, прошивка Вашего проекта (через ST-link) делает так, что для последующих прошивок надо переставлять перемычку Boot0, а отладка через ST-link вообще не работает. Т.к. плата ST-link стоит копейки и дает возможность прошивать без шаманств — это упростит вход для начинающих. А потратить на стартовый комплект 170 или 300 рублей — думаю, не большая разница…
Здравствуйте!
По St-link полно информации в интернете.
Тот вариант, который использую я удобен тем, что связь с компьютером необходима еще для отладки, работы программы в системе и т.п.
Нашел самостоятельно. Тут: https://istarik.ru/blog/stm32/107.html инструкция, как сделать себе бесплатный ST-link, и как настроить STM32CubeMX, чтобы TrueStudio отлаживал сгенеренный код. Прошивку можно обновлять и отлаживать, не дергая никакие перемычки и не соединяя провода на соплях.
Всем советую.
Здешние уроки вполне себе совместимы с ST-link, с учетом изменения одной настройки, описанной в статье по ссылке выше. Надеюсь, автор снизойдет до холопов и включит в описание вариант с ST-Link…
Много, но хотелось бы услышать именно от Вас. По всем остальным темам информации тоже много, но как неоднократно замечено — Ваши уроки — лучшие. Может сделаете урок по заливке через ST-Link
Приветствую Эдуард.
Новый интерфейс STM32CubeMX 5 ой версии взрывает мозг.
Какие Ваши ощущения при переходе с 4 на 5?
Здравствуйте!
Ко всему привыкаешь.
Во — первых, спасибо за прекрасные уроки. Я много чего читал в жизни, но такой хорошей подачи материала редко где встретишь. Очень здорово, продолжайте в том же духе.
По делу. По поводу поддержки Atollic. Скачал обновления для CubeMX (поставил версию 5.1, firmware 1.9 для stm32f0). После этого вдруг перестали генериться проекты. Файлы библиотек копируются в папку проекта, а файл проекта не создаётся (. Покопался и что вижу?
STM32CubeF0 Firmware Package V1.9.0 / 25-August-2017 Main Changes
Maintenance release.
Fix known defects and several enhancements implementation.
Remove support of Atollic TrueSTUDIO STM32 (TrueSTUDIO) toolchain.
General updates to be compliant with Linux platforms.
Т.е. поддержка Atollic для stm32f0 удалена! Во дела… Зачем это сделано, непонятно. И где гарантия, что она не будет удалена для других МК? Пришлось откатить всё назад. А интерфейс куба 5 мне лично совсем не понравился (. Так что, осторожно с обновлениями
Всем привет. Скажите пожалуйста возможно вопрос не по теме. Как можно увеличить шрифт в atollic truestudio. Когда пишешь код хочется видеть его гораздо крупнее как например в arduino там можно увеличивать шрифт кода. Подскажите пожалуйста как в atollic truestudio можно увеличить шрифт?
Всё нашёл, как увеличить размер шрифта в atollic truestudio. Очень здорово стало. Часами смотрел на мелкий шрифт.
и как?
Ага, написали и все, нет ответа, как боты какие-то:) Как шрифт увеличить? Кто знает
В Keil’е можно зажать и колесом мыши увеличивать или уменьшать масштаб (размер текста).
Window -> Preferences -> General -> Editors -> Text Editors = See ‘Colors and Fonts’ to configure the font -> C/C++ -> Editor
Двойной клик на Editor Text Font.
Window -> Preferences -> General -> Appearance -> Color Theme
Black Pastel — хороша
Wombat — тож не плохо
В редакторе ПКМ — Preferences.
C/C++ — Editor — типа веб ссылки в правом верхнем углу TexEditor .
Откроется следующее окно. — Найти ссылку «Colors and Fonts».В открывшейся — Edit . А там природа поможет.
Кто нибудь знает как в atollic truestudio отслеживать переменные в реал тайме. Скиньте пожалуйста ссылку, где это хорошо описывают.
Здравствуй,в папке Debug HEX файл не появляется,с чем может быть связано?
Здравствуйте!
Посмотрите урок 17. Может у вас режим Debug отключен.
Еще вариант — ошибки при компиляции.
Здравствуйте!
То же нет ни elf hex map файлов, одни .su
Решили проблему?
Ставил разнве версии и всё без толку….
Здравствуйте!
Застрял на стадии генерации проекта в КубМХ. Приложение спрашивает про скачивание пакета, соглашаюсь и потом выскакивает ошибка. Вручную скачиваю этот файл — не помогает. Какие есть варианты выхода из этой ситуации? До этого при первом включении программа скачивала файлы, значит со связью все в порядке.
У меня тоже так было.
Если не получается автоматом, надо файл надо не только скачать, но и разархивировать, и потом разархивированную папку указать в настройках проекта.
Я на эти грабли тоже влетел пока запихивал бинарники с git habov . Пытался сделать отладочный программатор из blue pill .
Да , у меня и com port получился из пилюли и с другой bin определяло пилюлю как st-link dungle.
Потом , сложилось впечатление , что бинарник прошил и пилюлю и программатор . Чтой тось там вроде докачало автоматом на win 7 .
Keil and st-link util взбунтовались .
Потом как то реанимировал . Сносил виртуал алкоголя ,тыркал кнопки и читал молитвы.
Заказал ещё 2 на амазоне и тут мой ST-link v 2 ожил .
Но он стал другим . Без подключенной turget ( целевое устройство ) программатор не принимает.
Добрый день. Столкнулся с проблемой. При нажатии кнопки GENERATE CODE и начале загрузки архива выбивает ошибку.
Error downloading the following files:
stm32cube_fw_f1_v170.zip (Not available)
For unavailable files, you can load them manually with the ‘From Local’ button
Я так понимаю, что доступа к указанному архиву у программы нет и на форуме ST она частенько всплывает. Возможно у кого-то есть необходимый архив? Буду благодарен
Сам отвечу на свой-же вопрос. Похоже что, старую версию убрали, а в программе забыли прописать.
Скачал архив с версией 180
https://my.st.com/content/ccc/resource/technical/software/firmware/40/db/b8/d5/bd/a7/41/b1/stm32cubef1.zip/files/stm32cubef1.zip/jcr:content/translations/en.stm32cubef1.zip
привет, сам вот столкнулся с такой же проблемой. не подскажете куда нужно распаковать архив?
Теоретически можно распаковать куда угодно, но потом эту папку надо указать в свойствах проекта, в самом низу директорию.
Добрый день!
Столкнулся с непреодолимой проблемой, помогите, пожалуста!
У меня есть F401RE NUCLEO со встроенным программатором и, собственно, F103C8T6. Насколько мне известно uart в программаторе уже «из коробки»
Но, используя программатор от NUCLEO никак не получается подключить по COM F103 к компу
Проблему решил путем подключения F103 через SWD и прошивки ее через ST-LINK utility и то, F103 определяется, если правильно подобрать момент между нажатием кнопки Reset на F103 и нажатием Connect в утилите
у меня вопрос.cmsis чем лучше хал или ЛЛ?.И как в Atollic TrueStudio программировать в данной библиотеке?Ведь на стм32 столько регистров что можно голову потерять.Как включить cmsis?
Здравствуйте!
Это решает разработчик программы в каждом конкретном случае. Если программа критична по времени выполнения, то CMSIS. В последующих уроках вы сможете сравнить эти способы.
я имею виду как лучше включить CMSIS в проект масса вариантов с чистого листа.Какой способ лучше.При изначальном настройке проекта cmsis в Atollic TrueStudio есть эта библиотека.Какие инклуды включать?.
плохо что вы не ответили по cmsis
Здравствуйте. После генерации проекта в CubeMX и при открытии его в True Studio, TrueStudio не видит некоторые заголовочные файлы, хотя в файловой системе они присутствуют.
Подозреваю, что структура проекта, генерируемая CubeMX не совпадает со структурой проекта TrueStudio.
Как это можно исправить? Где прописать зависимости?
Здравствуйте!
В STM32CubeMX в закладке Project Manager в поле Toolchain/IDE надо выбрать TrueSTUDIO.
Я так и сделал. Может быть в новой версии или CubeMX или TrueStudio изменены структуры каталогов? Может быть можно прописать путь к папке проектов в системной переменной PATH? Поможет ли это? Я не совсем понимаю, как компилятор встроенный в TRUEstudio ищет файлы/ То ли он обращается к системным средствам поиска каталогов, то ли использует свои средства…
Попробуйте поиграться с Advanced settings в настройках проекта. После того как я поставил галочку напротив настройки типа параллельно «.с», «.h», дело у меня пошло.
Вообще с путями, директориями лично у меня самый главный головняк в любой системе программирования. Часто не столько чисто программируешь, сколько разбираешься как правильно подключить библиотеки.
Почему не STM32CubeIDE?
Спасибо за статью.
Подскажите пожалуйста, почему может не работать подгрузка файлов при первом(и последующих) запуске? Ни в начале при попытке обновиться, ни при запуске «Generate Code», ни при нажатии «From Local»? Вроде как конектиться с сервером, а потом «not avialable», «can load them manually with the «From Local» button.» , но и там ошибка в загрузке :(((
ОС W10, java8 x32 и java8 x64 есть, с интернетом все в порядке, вторые сутки бьюсь, ничего понять не могу. Там вначале окно какое-то с предложения прокси-серверов, так я выбрал самый верхний пункт. без них.
И ещё: работу в STM32CubeMX(5.4.0) можно производить без подключения платы и ST-Link-2 ?
Здравствуйте! На моей плате nucleo F446RE нет внешнего кварцевого резонатора, подскажите пожалуйста как его подобрать и как к нему подобрать емкости и резисторы. В инструкции к МК не нашел
А, разве внутреннее тактирование там не предусмотрено?
в тексте «правая кнопка мыши», наверное, надо заменить на «левая» ? или у меня мыша праворукая
Тоже споткнулся о такое, видимо в разных версиях по разному. Там ещё можно внизу принудительно свойства задать.
Недавно просмотрел видео по отладке TrueSTUDIO https://youtu.be/mnskQnHj68Q с применением SWV (serial wire viewer). Какой для этого необходим программатор, я так понимаю, китайский ST-Link для этого не подходит? И где можно найти больше информации по отладке?
Здравствуйте!
Про отладку через ST-Link я буду рассказывать позже. А отладка через SWV доступна начиная с начиная с Cortex-M3.
Здравствуйте. Как описано в уроке загрузил Atolic TrueSTUDIO 9.3.0 и Cube MX 5.6.0. При компелировании проекта в TrueSTUDIO ругается что не видит #include «main.h» потом ругался что не видит «Description Resource Path Location Type
fatal error: stm32f1xx_hal.h: No such file or directory stm32f1xx_hal_gpio_ex.c /Lesson3/Lesson3_1/Drivers/STM32F1xx_HAL_Driver/Src line 40 C/C++ Problem» В чем проблемы? Куда копать?
Здравствуйте!
Вы в Cube MX проект создали?
Попробуйте мой проект. Посмотрите в моем проекте установки
Project -> C/C++ Build -> Paths and Symbols
Но они должны быть сделаны автоматически в Cube MX.
Спускаемся ниже, под вкладка Code Generator.
Здесь обязательно отмечаем опцию Generate peripheral initialization as pair…
Таким образом получим более структурированный проект, в котором для каждого типа периферии имеется своя пара C и H файлов.
Всё получилось-светодиод мигает!
Спасибо за урок, Эдуард!
Все получилось с первого раза. давно хотел начать с СТМ, но ни времени небыло, ни толкового урока.
Использую плату OPEN103R STM32F103RCT6
А почему автор использовал еще и Atollic, хотя все необходимое (и редактор, и компилятор) есть в STM32CUBE?
Сам даю ответ.
Среда STM32CubeMX предназначена для подготовки конфигурационных параметров (команды настройки регистров), но не содержит IDE.
Среда STM#@CebeIDE содержит и конфигурационную часть, и IDE.
Эдуарт в STM32CubeMX «готовит» конфигурационную часть, а в Atollic пишет код программы.
Вот такая связка программ, не очень понятная при первом прочтении.
Спасибо большое за хорошее объяснение! Скажите пожалуйста, где нажимать: «Нажимаем GENERATE CODE.»
И почему-то в ToolChain/IDE только STM32 CubeIDE и неактивный
Соответственно «нех» не видно
Здравствуйте!
В верхнем меню крайняя справа кнопка.
Спасибо!
В верхнем меню Project Manager не вижу…
Вижу за Project Manager идёт Tools.
Не добавляется Атолик, как у Вас написано
Расширенные настройки Code Generator ?
Там все неактивно
так и не смог установить консольную загрузку сразу из программы Atollic tru studio. нет информации . но зато есть другой выход для прошивки контроллера программатором китайским ST-LINK V2 . скачиваем программу STM32CubeProgrammer оттуда же откуда всё и скачивали . устанавливаем . и еще конечно надо установить программу ST-LINK Utility в этой проге есть драйвера для ST-LINK v2 . подключаем
SWDIO(st-link v2) —DIO(на плате stm32)
SWCLK(st-link v2) —CLK(на нашей плате)
при создании проекта в STM32CubeMX желательно поставить галочку напротив Debug Serial Wire в разделе Pinout & Configuration далее в окне SYS . в STM32CubeProgrammer (там сразу видно) нажать на Connekt для связи . Открыть Open File прошивку то есть в формате .hex или .bin или .elf .жмем Download . Ok . Обязательно надо разъединить соединение нажимая Disconect . и нажать кнопку сброса на плате . отладка программы простая . вносим изменения в Atollic True Studio затем компилируем молоточком Build Project и они моментально автоматически сами без нашего участия вносятся в файл в загрузчике STM32CubeProgrammer . нам остается только нажимать Connect затем Download затем OK затем Disconnect и кнопку сброса Reset на плате. можете по ходу и это изучить . тем более что наши прошивки типа .hex прошиваются на ура . само собой надо соединить GND ; +3.3V (или 5V) ;SWDIO; SWCLK при подключении .
да . и главное , на китайском программаторе ST-LINK V2 , были перепутаны контакты SWDIO и SWCLK . сначала ноутбук не видел его . после того как я поменял местами провода идущие на эти 2 контакта сразу всё заработало . снял крышку с него и точно на плате они показаны правильно а на крышке перепутаны . учтите этот момент .мне показалось что с ST-LINK V2 даже быстрее и удобнее прошивать чем с USB-TTL-UART . но с другой стороны с помощью USB-TTL-UART можно прошивать почти любые микросхемы . ну а с ST-LINK V2 можно прошить только платы имеющие выводы SWDIO и SWCLK . хотя конечно можно допаять и нарастить схему этими самодельными выводами но это уже будет акт садомазохизма .
извиняюсь можно прошить только платы имеющие выводы DIO и CLK .
SWD залочил таким конфигом
Сегодня лучше использовать STM32CubeIDE,
Та же TrueStudio (судя по всему, работает та же команда), но с добавлениями. Встроенный кубик. Некоторые дополнительные возможности. Проекты TrueStudio импортируются без проблем.
Всем привет. Не могу никак связаться через ардуино с стм32 (сейчас другого ничего нет под рукой). Соединил ресет с землей на ардуино, соединил Tx c Tx, Rx c Rx.
Потом попробовал залить через библиотеку SoftwareSerial, настройки СОМ-порта 115200. Устройства теперь соединяю через Tx c Rx.
В обоих случаях у меня выскакивает сообщения — «Unrecognized device…please, reset your device then try again».
Кто-нибудь сталкивался с подобным?
Здравствуйте!
Я так понял, что вы собираетесь использовать плату Ардуино как конвертер USB-UART.
Соедините Tx с Tx, Rx с Rx. Зафиксируйте нажатой кнопку сброс Ардуино. И попробуйте.
Еще может быть проблема — резистор 1 кОм, включенный между Tx ATmega и CH340. Точно будет работать, если подключиться непосредственно к CH340. Только относительно нее Tx к Rx и Rx к Tx.
Абсолютно правильно Вы мне подсказали. Изначально, использовалась Arduino Uno, у которой как раз стоял этот резистор. Покопавшись в запасах, нашел Nano, у нее чип ftdi и нет резистора. В се прошло удачно.
Дааа, титанический труд, конечно у Вас, Эдуард, огромные благодарности за подробный материал
Нашел такую платку решил попрбовать ее.
Настроил куб как у вас, тактирование от внеш кварца, настроил кейл для работы с St-link (китайский) подключил. Залил код
HAL_GPIO_TogglePin(LED13_GPIO_Port,LED13_Pin);
HAL_Delay(1000);
в надежде что будет мигать раз в 1 сек. В результате тишина, изменил на HAL_Delay(500); Тишина
Снова изменил HAL_Delay(350) — стало моргать.
Вроде как имею небольшой опыт работы с stm32 но вот чего-то не пойму почему при задержках более 350 светодиод на 13 лапе не хочет работать)))
Здравствуйте!
Не знаю, что сказать. Думаю, вы где-то совершили ошибку. Какая разница 350 мс или 500 мс.
Приветствую всех!
Сделал все, четко как описано, компиляция без ошибок, но hex-файл не формируется. Не помогло и Properties->C/C++ Build->Settings->Tool Settings->Output Format->Convert build output-> Intel Hex.
В Post-build steps строка вроде правильная: arm-atollic-eabi-objcopy.exe -O ihex «${BuildArtifactFileBaseName}.elf» «${BuildArtifactFileBaseName}.hex»
Может кто ответит, в чем причина?
Добрый день. Не удается прошить через STMFlashLoader. Сообщение: «No response from the target, the Boot loader can not be started. Please, verify the boot mode configuration and the flash protection status, Reset your device then try again…» Где искать проблему? И нет ли возможности добавлять картинки к коментариям?
Продолжайте тему!
не нашел ни одного ответа автора на комментарии
Приложение спрашивает про скачивание пакета, соглашаюсь и потом выскакивает ошибка.Какие есть варианты выхода из этой ситуации? До этого при первом включении программа скачивала файлы, значит со связью все в порядке.
У меня было подобное, когда я с помощью NOD32 запретил трафик программе. Пока не удалил это правило из NOD32, выпадала ошибка при попытке скачивания.
Здравствуйте! Что-то HEX файла нет. Неужто санкции?))
Здравствуйте!
Компилируйте, будет HEX-файл.
Посмотрел, HEX-файл есть. Путь Lesson3_1/Debug/
Всё, нашёл. Всё дело в настройках Project -> Properties -> C/C++ Build -> Settings -> Tools Settings -> MCU Post build outputs -> Convert to Intel Hex file (-O ihex)
Здравствуйте, делаю всё как в уроке, но при переходе в project manager в пункте Toolchain/IDE не могу выбрать True Studio, он там отсутствует среди вариантов.
Здравствуйте, на сегодняшний день загрузка TrueSTUDIO невозможна. Кто знает в чем может быть причина.? Смогу ли я дальше проходить уроки, если буду использовать Cube?
Здравствуйте!
Да, сможете. В интернете много информации о переносе проектов с TrueStudio на CubeIDE.
Сегодня мне порекомендовали Платформио. Не пробовали? А cubeIDE похоже всё…Заблокировали для нашей страны.
В сети всё есть. При установке в пути к файлу не должно быть кириллицы. Лучше вообще скопировать установочный файл прямо на диск С. После установки удалить.
Здравствуйте!
Не работает ссылка на скачивание архива проекта. Как можно получить доступ?
Здравствуйте!
Разница времени значительна в случае преобразования типов данных за счет указателей. Например, вы объявили массив типа float, и необходимо передать данные из него через UART, который передает тип byte. Вы преобразуете указатель на массив float в указатель byte и считываете его
по байтам.
Да, ссылки существуют.