Зображення користувача Андрій Гончаренко.
Андрій Гончаренко
  • Відвідувань: 0
  • Переглядів: 0

STM32: Знайомство з STM32F103Nucleo та засобом розробки mbed

Плата STM32F103 Nucleo має борту піддослідний чіп STM32F103RB. Це мікроконтролер з ядром Cortex-M3, 128Kbytes FLASH пам'яті, 72 MHz максимальна тактова частота процесора, максимальна кількість портів вводу/виводу 51, чотири - 16 бітних таймери, годинник реального часу RTC, інтерфейси: UART, SPI, I2C, USB, CAN, DMA, та ЦАП з АЦП.

Знайомство з 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", це блимання світлодіодом і реагування на кнопку.

Заходимо через браузер до "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 натискаючи на блакитну кнопку та спостерігаємо як міняється стан зеленого світлодіода.

Бібліотека 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"

Коротеньке наочне відео як завантажити приклади, компілювати їх, та "прошити" до мікроконтролера. 

Наші інтереси: 

Навчання в будь чиїх інтересах. 

Якщо ви помітили помилку, то виділіть фрагмент тексту не більше 20 символів і натисніть Ctrl+Enter
Підписуюсь на новини

Зверніть увагу

Френк Герберт: Ну як вам друге дно Вулика Геллстрома?

«Вулик Геллстрома», «Дюна» і 10 принципів Джигаду – політичний проект Френка Герберта

«Життя у вулику передбачає не регламентовану монотонність, а МЕТАМОРФОЗУ. Коли комаха досягає межі своїх можливостей, вона чудесним чином перетворюється на абсолютно нову істоту. У цій метаморфозі я...

Останні записи

Кращий коментар

Зображення користувача Володимир Федько.
0
Ще не підтримано

Випадково в Інеті наштовхнувся на відео:

https://www.youtube.com/watch?v=XDkEdsSUYEk

і по імені-прізвищу чомусь подумав, що це ти...

Як літак ?

Воїн Світла ніколи не грає за правилами, написаними для нього іншими!

Коментарі

Зображення користувача Володимир Федько.
0
Ще не підтримано

Випадково в Інеті наштовхнувся на відео:

https://www.youtube.com/watch?v=XDkEdsSUYEk

і по імені-прізвищу чомусь подумав, що це ти...

Як літак ?

Воїн Світла ніколи не грає за правилами, написаними для нього іншими!