призначений для оволодіння навичками роботи з мікроконтролерами STM32. Та виготовлення ігрових, розважальних поробок та побутової автоматики на базі мікроконтролерів STM32.
STM32: Знайомство з STM32F103Nucleo та засобом розробки mbed
Знайомство з STM32F103 Nucleo та засобом розробки mbed
Огляд плати розробника STM32F103 Nucleo
Загальний вигляд плати розробника 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, але особисто моя плата, такий кварц має.
Огляд засобу розробки mbed
Серія плат 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"
Випробуємо декілька простих програм такого собі мікроконтролерного "Hello World", це блимання світлодіодом і реагування на кнопку.
З'явиться вікно де потрібно обрати свою платформу, шаблон і ім'я програми. Наша платформа "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);
intmain() {
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);
intmain() {
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 натискаючи на блакитну кнопку та спостерігаємо як міняється стан зеленого світлодіода.
Бібліотека mbed
В дереві проекту, Nucleo_blink_led та Nucleo_read_button, крім файлу main.cpp присутня бібліотека mbed, яку ми підключаємо першим рядком програми #include "mbed.h". Насправді, якщо відкрити бібліотеку натиснувши "mbed", натиснувши в дереві проекту побачимо список з документації на класи, групи і структури:
Документація на бібліотеку mbed
Тепер подвійний клік в списку на classes і розгорнеться список з документації на класи. Наприклад розглянемо клас DigitalOut. Подвійний клік на DigitalOut в списку, відкриється опис цього класу:
Опис класу digitalout
Як видно з малюнку, опис складається з всіх доступних функцій і параметрів для цього класу, та з невеличкого прикладу програми.
Тепер ви вже можете самостійно спробувати та ознайомитись з іншими прикладами програм, що надаються mbed compiler. Та розглянути документацію інших класів, структур та груп.
Відео приклад "Blinky LED" та "Read Button"
Коротеньке наочне відео як завантажити приклади, компілювати їх, та "прошити" до мікроконтролера.
Немає коментарів:
Дописати коментар