- ST-LINK V2
- STM32CubeMX
- Необхідні матеріали
- Схема та з'єднання
- Створення та запис програми в STM32 за допомогою Keil uVision та ST-Link
- Висновок запрограмованої плати Keil STM32
- Програма
Мікроконтролери STM32, які використовують архітектуру ARM Cortex M, сьогодні стають популярними і використовуються у багатьох додатках завдяки своїм характеристикам, вартості та продуктивності. Ми запрограмували STM32F103C8, використовуючи Arduino IDE у наших попередніх навчальних посібниках. Програмування STM32 за допомогою Arduino IDE є простим, оскільки існує безліч бібліотек, доступних для різних датчиків для виконання будь-якого завдання, нам просто потрібно додати ці бібліотеки в програму. Це проста процедура, і ви можете не глибоко вивчити процесори ARM. Отже, ми переходимо до наступного рівня програмування, який називається програмуванням ARM. Цим ми можемо не тільки покращити структуру коду, але й заощадити місце в пам'яті, не використовуючи непотрібних бібліотек.
STMicroelectronics представила інструмент під назвою STM32Cube MX, який генерує базовий код відповідно до периферійних пристроїв та обраної плати STM32. Тому нам не потрібно турбуватися про кодування основних драйверів та периферійних пристроїв. Далі цей згенерований код можна використовувати в Keil uVision для редагування відповідно до вимог. І нарешті код спалюється в STM32 за допомогою програміста ST-Link від STMicroelectronics.
У цьому підручнику ми дізнаємося, як запрограмувати STM32F103C8 за допомогою Keil uVision & STM32CubeMX, виконавши простий проект взаємодії кнопки та світлодіода з дошкою STM32F103C8 Blue Pill. Ми згенеруємо код за допомогою STM32Cube MX, а потім відредагуємо та завантажимо код у STM32F103C8 за допомогою Keil uVision. Перш ніж вдаватися до деталей, ми спочатку дізнаємося про програміст ST-LINK та програмний інструмент STM32CubeMX.
ST-LINK V2
ST-LINK / V2 є відладчик і вибору програм в ланцюзі для мікроконтролерів сімейств STM8 і STM32. Ми можемо завантажити код на STM32F103C8 та інші мікроконтролери STM8 & STM32, використовуючи це ST-LINK. Однопровідний інтерфейсний модуль (SWIM) та інтерфейси JTAG / послідовний налагодження проводів (SWD) використовуються для зв'язку з будь-яким мікроконтролером STM8 або STM32, розташованим на платі додатків. Оскільки програми STM32 використовують повношвидкісний інтерфейс USB для зв’язку з інтегрованими середовищами розробки Atollic, IAR, Keil або TASKING, то ми можемо використовувати це обладнання для програмування мікроконтролерів STM 8 і STM32.
Вгорі зображено ключ ST-LINK V2 від STMicroelectronics, який підтримує весь спектр інтерфейсу налагодження SWD STM32, простий 4-провідний інтерфейс (включаючи живлення), швидкий і стабільний. Він доступний у різноманітних кольорах. Корпус виготовлений з алюмінієвого сплаву. Він має синю світлодіодну індикацію, оскільки використовується для спостереження за робочим станом ST-LINK. Назви штифтів чітко позначені на оболонці, як ми бачимо на зображенні вище. Він може взаємодіяти з програмним забезпеченням Keil, де програма може бути прошита на мікроконтролери STM32. Тож давайте подивимось у цьому підручнику, як цей програміст ST-LINK може бути використаний для програмування мікроконтролера STM32. Нижче на малюнку показані штифти модуля ST-LINK V2.
Примітка: Під час першого підключення ST-Link до комп’ютера. Нам потрібно встановити драйвер пристрою. Драйвери пристроїв можна знайти за цим посиланням відповідно до вашої операційної системи.
STM32CubeMX
Інструмент STM32CubeMX є частиною STMicroelectronics STMCube. Цей програмний інструмент полегшує розробку завдяки зменшенню зусиль, часу та витрат на розробку. STM32Cube включає STM32CubeMX, який є графічним інструментом конфігурації програмного забезпечення, що дозволяє генерувати код ініціалізації C за допомогою графічних майстрів. Цей код можна використовувати в різних середовищах розробки, таких як keil uVision, GCC, IAR тощо. Ви можете завантажити цей інструмент за таким посиланням.
STM32CubeMX має наступні функції
- Вирішувач неконфліктних ситуацій
- Помічник з установки годинника
- Калькулятор енергоспоживання
- Службова програма, що виконує периферійну конфігурацію MCU, наприклад, шпильки GPIO, USART тощо
- Утиліта, що виконує периферійну конфігурацію MCU для стеків проміжного програмного забезпечення, таких як USB, TCP / IP тощо
Необхідні матеріали
Апаратне забезпечення
- STM32F103C8 Синя таблетка
- ST-LINK V2
- Нажимна Кнопка
- СВІТЛОДІОДНИЙ
- Макет
- Провід перемички
Програмне забезпечення
- Засіб створення коду STM32CubeMX (посилання)
- Keil uVision 5 (посилання)
- Драйвери для ST-Link V2 (посилання)
Схема та з'єднання
Нижче наведена принципова схема простого підключення світлодіода до плати STM32 за допомогою кнопки.
Зв'язок між ST-LINK V2 та STM32F103C8
Тут плата STM32 Blue Pill живиться від ST-LINK, який підключений до USB-порту комп’ютера. Тому нам не потрібно живити STM32 окремо. У таблиці нижче показано зв’язок між ST-Link та Blue Pill Board.
STM32F103C8 |
ST-Link V2 |
GND |
GND |
SWCLK |
SWCLK |
SWDIO |
SWDIO |
3V3 |
3,3 В |
Світлодіод та кнопка
Світлодіод використовується для позначення виходу з дошки Blue Pill при натисканні кнопки. Анод світлодіода підключений до виводу PC13 плати Blue Pill і катод заземлений.
Кнопка підключена для забезпечення введення в штифтової PA1 з Blue Pill борту. Ми також повинні використовувати підтягуючий резистор зі значенням 10k, оскільки штифт може плавати без будь-якого введення при відпущенні кнопки. Один кінець кнопки підключений до заземлення, а інший кінець до штифта PA1, а підтягуючий резистор 10к також підключений до 3,3 В плати Blue Pill.
Створення та запис програми в STM32 за допомогою Keil uVision та ST-Link
Крок 1: - Спочатку встановіть усі драйвери пристроїв для ST-LINK V2, програмні засоби STM32Cube MX & Keil uVision та встановіть необхідні пакети для STM32F103C8.
Крок 2: - Другим кроком є Open >> STM32Cube MX
Крок 3: - Потім натисніть Новий проект
Крок 4: - Після цього виконайте пошук та виберіть наш мікроконтролер STM32F103C8
Крок 5: - Тепер з'являється ескіз розпізнавання STM32F103C8, тут ми можемо встановити конфігурації штифтів. Ми також можемо вибрати наші шпильки в розділі периферії відповідно до нашого проекту.
Крок 6: - Ви також можете натиснути безпосередньо на штифт, і з’явиться список, тепер виберіть необхідну конфігурацію штифта.
Крок 7: - Для нашого проекту ми вибрали PA1 як GPIO INPUT, PC13 як налагодження GPIO OUTPUT & SYS як SERIAL WIRE, тут ми лише підключаємо штирі ST-LINK SWCLK & SWDIO. Вибрані та налаштовані шпильки відображаються ЗЕЛЕНИМ кольором. Ви можете зазначити, що на зображенні нижче.
Крок 8: - Далі на вкладці Конфігурація виберіть GPIO, щоб встановити конфігурації штифтів GPIO для вибраних нами контактів.
Крок 9: - Далі у цьому вікні конфігурації штифтів ми можемо налаштувати ярлик користувача для штифтів, які ми використовуємо, тобто визначені користувачем імена штифтів.
Крок 10: - Після цього клацніть на Project >> Generate Code .
Крок 11: - З'явиться діалогове вікно налаштувань проекту. У цьому полі виберіть назву проекту та місце розташування та оберіть середовище розробки. Ми використовуємо Keil, тому виберіть MDK-ARMv5 як IDE.
Крок 12: - Наступний під Генератор коду вкладки, виберіть Копіювати тільки необхідні бібліотечні файли , а потім натисніть кнопку OK.
Крок 13: - Тепер з’явиться діалогове вікно генерації коду. Виберіть Відкрити проект, щоб автоматично відкрити проект, згенерований код у Keil uvsion.
Крок 14: - Тепер інструмент Keil uVision відкривається з нашим згенерованим кодом у STM32CubeMx з тим самим іменем проекту з необхідною бібліотекою та кодами, які налаштовані для вибраних нами контактів.
Крок 15: - Тепер нам просто потрібно включити логіку для виконання певної дії на вихідному світлодіоді (контакт PC13) при натисканні кнопки та відпуску на вході GPIO (контакт PA1). Тож виберіть нашу програму main.c, щоб включити деякі коди.
Крок 16: - Тепер додайте код у цикл while (1) , див. Зображення нижче, де я виділив цей розділ для безперервного запуску коду.
while (1) {if (HAL_GPIO_ReadPin (BUTN_GPIO_Port, BUTN_Pin) == 0) // => Кнопка DETECTS натискається {HAL_GPIO_WritePin (LEDOUT_GPIO_Port, LEDOUT_Pin, 1); // Зробити високим вихід при натисканні кнопкиd} else {HAL_GPIO_WritePin (LEDOUT_GPIO_Port, LEDOUT_Pin, 0); // Зробити вихід низьким при натисканні кнопки}}
Крок 17: - Після закінчення редагування коду клацніть піктограму Параметри для цілі на вкладці налагодження, виберіть налагоджувач ST-LINK
Крім того, натисніть кнопку Налаштування, а потім на вкладці Завантажити Flash встановіть прапорець Скинути та запустити та натисніть "ОК".
Крок 18: - Тепер натисніть на значок Відновити, щоб відновити всі цільові файли.
Крок 19: - Тепер ви можете підключити ST-LINK до комп'ютера з готовими підключеннями мережі та натиснути на піктограму СКАЧАТИ або натиснути F8, щоб прошивати STM32F103C8 кодом, який ви створили та відредагували.
Крок 20: - Ви можете помітити блимаючу індикацію внизу вікна keil uVision.
Висновок запрограмованої плати Keil STM32
Тепер, коли ми натискаємо кнопку, світлодіод включається, а коли ми відпускаємо його, світлодіод вимикається.
Програма
Основна частина, яку ми додали в створену програму, показана нижче. Цей наведений нижче код повинен бути включений у програму while (1 ) програми main.c, створену STM32CubeMX. Ви можете повернутися до кроку 15 до кроку 17, щоб дізнатися, як його слід додавати в програму main.c.
while (1) {if (HAL_GPIO_ReadPin (BUTN_GPIO_Port, BUTN_Pin) == 0) // => Кнопка DETECTS натискається {HAL_GPIO_WritePin (LEDOUT_GPIO_Port, LEDOUT_Pin, 1); // Зробити високим вихід при натисканні кнопкиd} else {HAL_GPIO_WritePin (LEDOUT_GPIO_Port, LEDOUT_Pin, 0); // Зробити вихід низьким при натисканні кнопки}}
Повний процес створення та завантаження проекту на плату STM32 також пояснюється у відео, поданому в кінці. Також нижче наведено повний код файлу main.c, включаючи вказаний вище код.
Крім того, ви можете знайти наш повний набір проектів STM32 тут.