![]() |
Загальний вигляд плати розробника STM32F103 Nucleo |
Плата STM32F103 Nucleo має борту піддослідний чіп STM32F103RB. Це мікроконтролер з ядром Cortex-M3, 128Kbytes FLASH пам'яті, 72 MHz максимальна тактова частота процесора, максимальна кількість портів вводу/виводу 51, чотири - 16 бітних таймери, годинник реального часу RTC, інтерфейси: UART, SPI, I2C, USB, CAN, DMA, та ЦАП з АЦП. Докладна документація на сайті виробника за цим посиланням.
Периферія, що на борту плати розробника серії Nucleo доволі скромна і має тільки користувацькі світлодіод і кнопку. Має два типи роз'ємів для спілкування з зовнішнім світом. Це Arduino connector та ST Morpho connector. Розташування елементів і роз'ємів на платі зображено на малюнку.
![]() |
Розташування елементів на платі |
Документація по цій платі доступна на сайті розробника за цим посиланням. Як і інші плати розробника, містить програматор ST-link v2, яким також можна прошивати інші мікроконтролери STM. У разі застосування плати в кінцевий продукт, програматор ST-link, можна легко від'єднати від основної плати. І отримати в своє розпорядження окремий програматор.
![]() |
ST-Link V2 |
На загал, доволі стандартно. Зосередимось на особливостях.
Головна особливість плат серії Nucleo це можливість підключення великої кількості "Arduino Shield", плат розширення периферії системи ARDUINO, за рахунок сумісності роз'ємів з Arduino connector. А також компанія ST пропонує плати розширення периферії своєї розробки. Це дозволяє швидко розширяти можливості плати і будувати доволі складні програмно-апаратні системи.
![]() |
Arduino connector |
Роз'єми ST Morpho дозволяють скористатись повним набором периферії та можливостей мікроконтролера STM32F103RB.
![]() |
ST Morpho |
На платі STM32F103 Nucleo не впаяний зовнішній кварцовий резонатор і два конденсатора для тактування мікроконтролера, хоча місце для нього на платі зарезервовано і при необхідності можна самому допаяти резонатор і два конденсатори. Можна і без нього, мікроконтролер має внутрішній генератор тактових імпульсів. Читав що плата постачається також і без зовнішнього годинникового кварцу для RTC, але особисто моя плата, такий кварц має.
Серія плат Nucleo входить до складу засобу розробки і компілятора mbed. Це така собі соціальна мережа розробників. Тут є все необхідне для швидкого старту. Засоби написання коду, компілятор, приклади програм, бібліотеки, форум розробників, тощо. Дуже зручно, що можна мати доступ до своїх розробок з будь якого місця і комп'ютера, з одного боку. І дуже не зручно з іншого боку, бо те все працює тільки при наявності доступу до інтернет.
Перш за все потрібно зареєструватись на цьому ресурсі. Заходимо за посиланням та реєструємось натиснувши кнопку "Signup". Далі тиснемо на "no, i haven't created an accaunt before" і дотримуючись інструкцій заповнюємо необхідні поля. Після успішної реєстрації отримаєте повідомлення "Welcome to mbed! To register a board, please plug the board in and click on MBED.HTM". Тепер можна додати свою плату натиснувши "Platform" та обрати STM32F103 Nucleo, або ту плату, що є у вас в наявності і підтримується mbed. Далі з'явиться робочий простір "Workspace Management". Як приклад, моя сторінка на mbed.
![]() |
Workspace management |
Все майже готово для початку. Залишилось завантажити і встановити "свіжі" драйвера для ST-LINK на свій ПК за цим посиланням. Та оновити "прошивку" самого програматора ST-LINK. Як це зробити, можна дізнатись за посиланням.
Випробуємо декілька простих програм такого собі мікроконтролерного "Hello World", це блимання світлодіодом і реагування на кнопку.
Заходимо через браузер до "mbed compiler workspace". Створюємо нову програму. Тиснемо меню "New".
![]() |
Створюємо нову програму |
З'явиться вікно де потрібно обрати свою платформу, шаблон і ім'я програми. Наша платформа "Platform: NUCLEO-F103RB", шаблон обираємо "Template: Blinky LED Hello World", ім'я програми "Program Name: Nucleo_blink_led" генерується, в цьому випадку, автоматично, але можна поміняти при бажанні.
![]() |
Обираємо шаблон з списку |
Тиснемо "OK" і отримуємо робочий простір з деревом проекту програми (1), списком файлів (2)і детально про програму (3).
![]() |
Проект програми blink led |
В дереві проекту (1) тиснемо на файлі "main.cpp" і ознайомлюємось з шаблоном програми.
1 2 3 4 5 6 7 8 9 10 11 12 |
#include "mbed.h" DigitalOut myled(LED1); int main() { while(1) { myled = 1; // LED is ON wait(0.2); // 200 ms myled = 0; // LED is OFF wait(1.0); // 1 sec } } |
В першому рядку підключаємо бібліотеку "mbed". В третьому рядку оголошуємо цифровим виходом LED1 та присвоюємо йому ім'я myled. Далі в основній функції main безкінечний цикл в якому вмикаємо світлодіод на 200 мілісекунд, а потім вимикаємо його на одну секунду і повторюємо знову і знову. Все дуже просто, наочно і зрозуміло.
Тепер потрібно скомпілювати програму. Для цього в меню тиснемо "Compile", або "Ctrl+D" і ваш браузер завантажує готовий для заливки бінарний файл"Nucleo_blink_led_NUCLEO_F103RB.bin" в теку завантажень. Під'єднуємо до ПК через USB свою плату Nucleo і з'явиться електронний диск (флешка) з ім'ям "NUCLEO". Тепер достатньо завантажений бінарний файл з програмою перемістити або скопіювати на цей диск і програма прошиється до мікроконтролеру автоматично. Як все виконали правильно, то на вашій платі Nucleo має блимати зелений світлодіод.
Випробуємо інший приклад програми. Створюємо нову програму - тиснемо в меню "New". З пропонованих шаблонів обираємо "Read the board user button state". І тиснемо "OK". В дереві проекту нашої нової програми обираємо файл "main.cpp" і ознайомлюємось з текстом програми.
1 2 3 4 5 6 7 8 9 10 11 12 13 |
#include "mbed.h" DigitalIn mybutton(USER_BUTTON); DigitalOut myled(LED1); int main() { while(1) { if (mybutton == 0) { // Button is pressed myled = !myled; // Toggle the LED state wait(0.2); // 200 ms } } } |
Перший рядок підключаємо бібліотеку "mbed" в третьому рядку оголошуємо USER_BUTTONяк цифровий вхід і даємо йому ім'я mybutton. Аналогічно, як в попередньому прикладі, оголошуємо світлодіод myled, як цифровий вихід. А далі, в тілі основній функції main, у безкінечному циклі перевіряємо чи натиснута кнопка - це рядок 8. Якщо так, то змінюємо стан світлодіода на протилежний. Затримка на 200 мілісекунд в 10 рядку і на початок безкінечного циклу.
Компілюємо програму, переносимо або копіюємо завантажений бінарний файл до диску Nucleo і перевіряємо роботу програми на нашій платі STM32F103RB Nucleo натискаючи на блакитну кнопку та спостерігаємо як міняється стан зеленого світлодіода.
В дереві проекту, Nucleo_blink_led та Nucleo_read_button, крім файлу main.cpp присутня бібліотека mbed, яку ми підключаємо першим рядком програми #include "mbed.h". Насправді, якщо відкрити бібліотеку натиснувши "mbed", натиснувши в дереві проекту побачимо список з документації на класи, групи і структури:
![]() |
Документація на бібліотеку mbed |
Тепер подвійний клік в списку на classes і розгорнеться список з документації на класи. Наприклад розглянемо клас DigitalOut. Подвійний клік на DigitalOut в списку, відкриється опис цього класу:
![]() |
Опис класу digitalout |
Як видно з малюнку, опис складається з всіх доступних функцій і параметрів для цього класу, та з невеличкого прикладу програми.
Тепер ви вже можете самостійно спробувати та ознайомитись з іншими прикладами програм, що надаються mbed compiler. Та розглянути документацію інших класів, структур та груп.
Коротеньке наочне відео як завантажити приклади, компілювати їх, та "прошити" до мікроконтролера.
Навчання в будь чиїх інтересах.
Випадково в Інеті наштовхнувся на відео:
https://www.youtube.com/watch?v=XDkEdsSUYEk
і по імені-прізвищу чомусь подумав, що це ти...
Як літак ?
Воїн Світла ніколи не грає за правилами, написаними для нього іншими!
Коментарі
Випадково в Інеті наштовхнувся на відео:
https://www.youtube.com/watch?v=XDkEdsSUYEk
і по імені-прізвищу чомусь подумав, що це ти...
Як літак ?
Воїн Світла ніколи не грає за правилами, написаними для нього іншими!