- Вибір та завантаження необхідних платформ для розробки плат Nucleo64
- Електрична схема та налаштування обладнання
- Початок роботи зі STM32CubeMX для дощок розвитку STM32 Nucleo64
- Програмування STM32 Nucleo64 Board Development з використанням TrueSTUDIO
- Програма STM32 Nucleo64 для управління світлодіодами за допомогою кнопки
- Налагодження та завантаження коду на плату розробки STM32 Necleo64 за допомогою TrueSTUDIO
Багатьом з нас слід бути знайомими з популярними мікроконтролерами та платами розробки, такими як Arduino, Raspberry Pi, ESP8266, NoduMCU, 8051 тощо. Насправді для більшості людей Arduino був би їхньою першою платою розробки, але, як тільки ми глибоко копаємось і починаємо професійні конструкції, ми незабаром усвідомимо обмеження Arduino (наприклад, вартість, універсальність, стабільність, швидкість тощо) і зрозуміємо необхідність переходу на більш рідну платформу мікроконтролера, як PIC, STM, Renesas тощо.
Ми вже розглянули послідовність навчальних посібників з мікроконтролера PIC, в яких навчаються початківці для вивчення мікроконтролерів PIC. Подібним чином, починаючи з цієї статті, ми також плануємо послідовність навчальних посібників з дошки розвитку STM32 Nucleo64, які можуть допомогти абсолютним початківцям навчатися та розвиватися за допомогою платформи STM32. Ради розвитку Nucleo64 - це низька вартість і проста у використанні платформа як для професійних розробників, так і для любителів. Якщо ви абсолютно не знайомі з дошками розвитку STM32 Nucleo64, перегляньте це відео Nucleo64 Review, щоб зрозуміти основи цієї дошки, перш ніж продовжувати далі. Відео також демонструє, як програмувати STM32 за допомогою платформи ARM Mbed але для цього підручника ми використаємо ще одну безкоштовну платформу від ST Microelectronics, яка називається TrueSTUDIO.
Примітка: Існує багато версій дощок розвитку STM32 Nucleo64, конкретною дошкою, що використовується в цьому посібнику, є NUCLEO-F030R8. Ми вибрали цю дошку головним чином через її низьку вартість. Навіть якщо у вас інша версія, для початку вам буде достатньо всього, що обговорюється в підручнику.
Вибір та завантаження необхідних платформ для розробки плат Nucleo64
Для початку роботи з будь-яким мікроконтролером знадобиться IDE для програмування, як у нас Arduino IDE для плат Arduino, Atmel Studio для мікроконтролера AVR, MP Lab для PIC тощо. Отже, тут нам також потрібна IDE для наших плат STM32 Nucleo64 для виконання програмування та налагодження. Сімейство STM32 складається з 32-розрядних мікроконтролерів, які підтримують такі IDE і ланцюжки інструментів:
- IAR Embedded Workbench® для ARM® (EWARM).
- MDK-ARM Keil
- TrueSTUDIO
- Системний робочий стіл для STM32
Тут для наших підручників TrueSTUDIO буде використовуватися для написання, компіляції та налагодження коду, оскільки його можна безкоштовно завантажувати та використовувати навіть для комерційних проектів без будь-яких вимог ліцензії. Тоді STM32CubeMX буде використовуватися для створення периферійних драйверів для плат STM32, щоб спростити програмування. Щоб завантажити нашу програму (шістнадцятковий файл) на нашу дошку розробників, люди зазвичай використовують інструмент STM32 ST-LINK Utility, але замість цього ми будемо використовувати для цього TrueSTUDIO. TrueSTUDIO має режим налагодження, який дозволяє програмістам завантажувати шістнадцятковий файл безпосередньо на плату STM32. Як TrueSTUIO, так і STM32CubeMX легко завантажити, просто перейдіть за посиланням нижче, зареєструйтесь та завантажте налаштування. Потім встановіть їх на свій ноутбук.
- Завантажте STM32Cube MX
- Завантажте TrueSTUDIO
Електрична схема та налаштування обладнання
Перш ніж приступити до розділу програмного забезпечення та кодування, давайте підготуємо нашу дошку до цього проекту. Як згадувалося раніше в цій статті, ми збираємося керувати світлодіодом за допомогою кнопки. Тепер, якщо ви бачили відео, зв’язане вище, ви вже повинні знати, що ваша плата розробки STM32 має два набори контактних штифтів з обох боків, які називаються штифтами ST Morpho. Ми підключили кнопку та світлодіод до цих контактів, як показано на схемі нижче.
Для цього проекту легко підключити схему, нам потрібно підключити світлодіод на PA5 PORTA і перемикач на PC13 PORTC щодо GND. Після встановлення з'єднань моя тестова установка виглядала так.
Крім того, ми також можемо використовувати вбудований світлодіод і кнопку на платі. Ці вбудовані світлодіоди та кнопка також підключені на одному штифті, як показано на схемі. Ми додали зовнішні компоненти лише для практики. Наведена нижче схема контактів на платі розробки STM32 стане в нагоді, щоб знати, де кожен морфо-штифт підключений до борту.
Початок роботи зі STM32CubeMX для дощок розвитку STM32 Nucleo64
Крок 1: Після встановлення запустіть STM32CubeMX, а потім виберіть селектор дошки доступу, щоб вибрати плату STM32.
Крок 2: Тепер знайдіть дошку за назвою вашої плати STM32, наприклад NUCLEO-F030R8, і натисніть на дошку, показану на малюнку. Якщо у вас інша дошка, знайдіть її відповідну назву. Програмне забезпечення буде підтримувати всі плати розробки STM32 від ST Microelectronics.
Крок 3: Тепер натисніть так, як показано на малюнку нижче, щоб ініціалізувати всю периферію в режимі за замовчуванням. Пізніше ми можемо змінити необхідні, якщо це потрібно нашому проекту.
Після натискання кнопки "Так" екран буде схожий на зображення нижче та зелений кольоровий штифт, що вказує на те, що вони ініційовані за замовчуванням.
Крок 4: Тепер користувачі можуть вибрати бажаний параметр з категорій. У цьому посібнику ми збираємося перемикати світлодіод за допомогою кнопки. Отже, нам потрібно зробити світлодіодний штифт як вихідний, а вимикач як ВХІД.
Ви можете вибрати будь-який штифт, але я вибираю PA5 і змінюю його стан на GPIO_Output, щоб він працював як вихідний штифт, як показано на малюнку нижче.
Подібним чином я вибираю PC13 як GPIO_Input, щоб я міг прочитати стан своєї кнопки.
Крім того, ми можемо також налаштувати штифти з вкладки розпіновки та конфігурації, як показано нижче.
Крок 5: На наступному кроці користувач може встановити бажану частоту для мікроконтролера та контактів відповідно до зовнішнього та внутрішнього генератора. За замовчуванням вибирається внутрішній кристалогенератор 8 МГц, і за допомогою ФАПЧ цей 8 перетворюється на 48 МГц. Це означає, що за замовчуванням плата STM32 або мікроконтролер та піни будуть працювати на 48 МГц.
Крок 6: Тепер перейдіть до менеджера проекту та дайте ім'я своєму проекту, місцезнаходженню проекту та виберіть ланцюжок інструментів або IDE. Тут ми використовуємо TrueSTUDIO, тому я вибрав те саме, що показано нижче.
Крок 7: Тепер натисніть на Generate Code mark червоним колом на малюнку нижче.
Крок 8: Тепер ви побачите спливаюче вікно, як вказано, потім натисніть на відкритий проект. Але перед цим кроком переконайтеся, що ви встановили TrueSTUDIO.
Програмування STM32 Nucleo64 Board Development з використанням TrueSTUDIO
Тепер ваш код або проект автоматично відкриються в TrueSTUDIO, якщо TrueSTUDIO запитує розташування робочої області, а потім надає місце робочої області або переходить до розташування за замовчуванням.
Користувач побачить наведений нижче екран, а потім потрібно клацнути на кутовій позначці червоним кольором.
І тепер ми можемо бачити код у нашій ID-системі TreuSTUDIO. Ліворуч під папкою 'src' ми можемо побачити інші програмні файли (із розширенням.c), які вже були створені для нас із STM32Cube. Нам просто потрібно запрограмувати файл main.c. Навіть у файлі main.c ми вже маємо кілька речей, налаштованих для нас CubeMX, нам залишається лише відредагувати його відповідно до нашої програми. Повний код у файлі main.c наведено внизу цієї сторінки.
Програма STM32 Nucleo64 для управління світлодіодами за допомогою кнопки
Оскільки всі необхідні драйвери та код генеруються STM32CubeMX, нам потрібно лише налаштувати світлодіодний штифт як вихідний сигнал і кнопку як вхідний сигнал. Програма для керування світлодіодами за допомогою кнопки повинна бути записана у файлі main.c. Повну програму можна знайти внизу цієї сторінки. Пояснення цього полягає в наступному
У нас є лише написаний код для перемикання світлодіода за допомогою кнопки. Для цього спочатку визначаємо штифти для світлодіодів та кнопок. Тут ми визначили світлодіод на контакті 5 номер PORTA
#define LED_PORT GPIOA #define LED_PIN GPIO_PIN_5
І визначте перемикач на контактному номері 13 PORTC.
#define SW_PORT GPIOC #define SW_PIN GPIO_PIN_13
Потім у головній функції ми ініціалізували всі використовувані периферійні пристрої.
/ * Ініціалізувати всю налаштовану периферію * / MX_GPIO_Init (); MX_USART2_Init ();
А потім прочитайте кнопку за допомогою оператора if, і якщо кнопка знайдена натисніть (LOW), тоді світлодіод перемкне свій стан.
У той час як (1) {/ * КОРИСТУВАЧИЙ КОД ЗАКІНЧУЄТЬСЯ ПОКИ * / Якщо (! HAL_GPIO_ReadPin (SW_PORT, SW_PIN)) {HAL_GPIO_TogglePin (SW_PORT, LED_PIN); HAL_Delay (200); } / * КОРИСТУВАЧЬ ПОЧИНАЄТЬСЯ 3 * /}
Тут функція HAL_GPIO_ReadPin (SW_PORT, SW_PIN) має два аргументи, один - PORT, а інший - штифт, до якого підключений комутатор, і цей штифт налаштований як INPUT під час налаштування периферійного пристрою в STM32CubeMX.
Налагодження та завантаження коду на плату розробки STM32 Necleo64 за допомогою TrueSTUDIO
Тепер підключіть плату до комп’ютера за допомогою кабелю програміста. Після підключення драйвер, необхідний для плати, повинен бути автоматично завантажений, це можна перевірити за допомогою диспетчера пристроїв.
Потім натисніть значок налагодження, позначений червоним колом на зображенні нижче, щоб скомпілювати програму та перейти в режим налагодження.
У режимі налагодження код буде автоматично завантажений. Тепер нам потрібно запустити код, натиснувши "Продовжити" або F8 (позначений червоною ланцюгом на малюнку нижче).
Тепер ми можемо перевірити управління світлодіодами, натиснувши кнопку. Відповідно до коду, світлодіод повинен змінювати свій стан кожного разу, коли ви натискаєте кнопку. Повну роботу також можна знайти у відео, на яке посилається внизу цієї сторінки.
Після тестування ми також можемо припинити програму, натиснувши піктограму завершення, позначену червоним кружком на малюнку нижче.