Передмова
Нещодавно вийшла "Mbed Studio IDE" для розробки додатків і бібліотек "Mbed OS 5", яка вміщає в собі всі необхідні залежності та інструменти в одному пакеті, що дозволяє створювати, компілювати та налагоджувати програми Mbed на вашому комп'ютері. Це і програмування в стилі Arduino IDE, що допоможе легко стартувати людям, які звикли до Arduino, та хочуть перейти на мікроконтролери STM32. Це і програмування за допомоги HAL бібліотек, для тих, хто вже знайомий з сімейством STM32, та віддає перевагу цим бібліотекам. В цій статті розглянемо встановлення "Mbed Studio IDE", та створення не простого мікроконтролерного "Hello, world!", яким не тільки поблимаємо вбудованим світлодіодом. А щоб переконатись в легкості і доступності розробки на всі смаки, зробімо так - ініціалізуємо і поблимаємо вбудованим світлодіодом на PA_5 за допомоги mbedOS, ініціалізуємо і поблимаємо зовнішнім світлодіодом на PA_9 (який треба приєднати до плати самотужки) за допомоги HAL драйверів. Та не просто поблимаємо ними по черзі з "delay" в основному циклі, а за допомоги переривань з різною частотою. Плюс в основному циклі будемо передавати по UART2 (цей UART2 також надсилає данні і на USB_COM_PORT) лічильник секунд. Піддослідною платою буде STM32F103 Nucleo.
Встановлення Mbed Studio IDE
Завантажте та запустіть інсталяційний файл з "Mbed Studio IDE". Встановлення стандартне без якихось особливостей. Слідуйте вказівкам інсталяційної програми. Після встановлення запустіть Mbed Studio IDE. Та підключіть свою плату Nucleo до USB роз'єму.
Створення демонстраційного проекту
- File -> New Program -> Select Example Code "empty Mbed OS program" -> Program name "my_test_blinky"
Створення проекту - Відкрийте файл main.cpp, клацнувши по назві файлу в дереві проекту. Зітріть весь текст в полі для коду і вставте цей демонстраційний код (код добре прокоментований додаткових пояснень не потребує):
#include "mbed.h" RawSerial pc(USBTX, USBRX); // tx, rx ініціалізація UART2 для передачі/прийому даних по USB COM PORT DigitalOut ledGreen(LED2); // ініціалізація вбудованого на платі Nucleo світлодіода як цифровий віхід Ticker flipper1; // створення ticker з назвою flipper1 Ticker flipper2; // створення ticker з назвою flipper2 //--Оголошення прототипів функцій---- static void flip1(void); // функція перекидання стану світлодіода PA_5 за допомоги MbedOS static void flip2(void); // функція перекидання стану світлодіода PA_9 за допомоги HAL static void ledWhiteInit(void); // функція ініціалізації ніжки PA_9 за допомоги HAL драйверу //----------------------------------- // main() runs in its own thread in the OS int main() { ledWhiteInit(); // викликаємо функцію ініциалізації ніжки PA_9 за допомоги HAL драйверу int counter = 0; // ініціалізуємо змінну для лічильника секунд flipper1.attach(&flip1, 0.5); // закріплюємо за flipper1 виклик функції flip1 з частотою два рази на секунду flipper2.attach(&flip2, 1.5); // закріплюємо за flipper2 виклик функції flip2 з частотою раз на півтори секунди pc.baud(115200); // встановлюємо швидкість обміну даними по UART2 як 115200 pc.printf("Hello UART!\n\r"); // надсилаємо привітання в usb_com_port while (true) { pc.printf("counter sec = %d\n\r", counter++); // надсилаємо в usb_com_port значення лічильника wait(1.0); // чекаємо 1 секунду } } //--функція ініціалізації ніжки PA_9 за допомоги HAL драйверу-- static void ledWhiteInit(void) { __HAL_RCC_GPIOA_CLK_ENABLE(); // викликаємо тактування порту А GPIO_InitTypeDef GPIO_InitStruct; // створюємо структуру для налаштування GPIO_InitStruct.Pin = GPIO_PIN_9; // ніжка 9 GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; // режим вихід GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH; HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); // ініціалізуємо HAL_GPIO_WritePin(GPIOA, GPIO_PIN_9, GPIO_PIN_RESET); // встановлюємо початковий стан "вимкнено" } //------------------------------------------------------------- //--функція зміни стану світлодіода на PA_5-------------------- static void flip1(void) { ledGreen = !ledGreen; } //------------------------------------------------------------- //--функція зміни стану світлодіода на PA_9-------------------- static void flip2(void) { HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_9); } //-------------------------------------------------------------
- Натисніть кнопку "Build program". Перший раз будуватись програма буде довго (декілька хвилин). Будуть завантажуватись всі бібліотеки, залежності і драйвери, які входять до MbedOS. По завершенню компіляції натисніть кнопку "Run program". Ваша програма заллється до пам'яті мікроконтролеру і автоматично запуститься.
- З різною частотою заблимають світлодіоди. А запустивши якусь термінальну програму і налаштував її на COM port, до якого під'єднано ваш Nucleo, та швидкість 115200 побачите там лічильник секунд:
Термінал
Короткий огляд інтерфейсу Mbed Studio IDE
Інтерфейс Mbed Studio IDE |
- Яка зараз активна програма для розробки;
- Яка плата під'єднана для розробки;
- Який профіль розробки: debug, develop, release;
- Компілювання програми;
- Заливка і запуск програми на мікроконтролері;
- Поле для редагування коду;
- Дерево проекту.
Немає коментарів:
Дописати коментар