Совместимость по выходам с NUCLEO-L432KC, USB подключен к микроконтроллеру (GPIO: PA11/PA12) для работы в режиме USB Device или встроенного загрузчика DFU. Для перехода в режим DFU нужно включить питание платы либо активировать RESET с нажатой кнопкой SW1. Для быстрого перехода в режим загрузчика можно активировать прерывание по выводу PH3 (к нему подключена пользовательская кнопка) для этого нужно в функцию void setup() вставить код:
//Включение тактирования порта GPIOH __HAL_RCC_GPIOH_CLK_ENABLE(); //подключение прерывания для вывода PH3, для активации RESET по нажатию кнопки stm32_interrupt_enable(GPIOH, LL_GPIO_PIN_3, NVIC_SystemReset, GPIO_MODE_IT_RISING);
Для работы с платой в Arduino IDE нужно добавить ссылку для менеджера плат в меню Файл → Параметры в строку: Дополнительные ссылки для Менеджера плат:
https://github.com/stm32duino/BoardManagerFiles/raw/main/package_stmicroelectronics_index.json
В менеджере плат установить библиотеку STM32 MCU based boards:
При необходимости подключить поддержку USB CDC - виртуальный com-порт:
Для прошивки контроллера понадобится STM32CubeProgrammer без VPN
//Светодиод на D13 #define LED 13 void setup() { //Подключение пользовательской кнопки для быстрой перезагрузки и входа в режим загрузчика (DFU) //Включение тактирования порта GPIOH __HAL_RCC_GPIOH_CLK_ENABLE(); //переключение вывода PH3 в режим входа LL_GPIO_SetPinMode(GPIOH, LL_GPIO_PIN_3, LL_GPIO_MODE_INPUT); pinMode(LED, OUTPUT); // Запуск USB Device в режиме CDC (виртуальный COM-порт) SerialUSB.begin(); } bool led = false; int i = 0; void loop() { // проверка нажата ли кнопка if (LL_GPIO_IsInputPinSet(GPIOH, LL_GPIO_PIN_3)) { //перезагрузка микроконтроллера NVIC_SystemReset(); } if (led) { led = false; digitalWrite(LED, HIGH); } else { led = true; digitalWrite(LED, LOW); } delay(250); i++; Serial.print(i); }
Для работы с платой в среде VSCode нужно установить расширение PlatformIO.
Создать новый проект, выбрать целевую плату и фреймворк:
В файле platformio.ini добавить строку upload_protocol = dfu для загрузки прошивки через USB, при необходимости подключить поддержку USB CDC - виртуальный com-порт добавив build_flags = -D PIO_FRAMEWORK_ARDUINO_ENABLE_CDC -D USBCON :
[env:nucleo_l432kc] platform = ststm32 board = nucleo_l432kc framework = arduino upload_protocol = dfu build_flags = -D PIO_FRAMEWORK_ARDUINO_ENABLE_CDC -D USBCON
#include <Arduino.h> //Светодиод на D13 #define LED 13 void setup() { //Подключение пользовательской кнопки для быстрой перезагрузки и входа в режим загрузчика (DFU) //Включение тактирования порта GPIOH __HAL_RCC_GPIOH_CLK_ENABLE(); //переключение вывода PH3 в режим входа LL_GPIO_SetPinMode(GPIOH, LL_GPIO_PIN_3, LL_GPIO_MODE_INPUT); pinMode(LED, OUTPUT); // Запуск USB Device в режиме CDC (виртуальный COM-порт) SerialUSB.begin(); } bool led = false; int i = 0; void loop() { // проверка нажата ли кнопка if (LL_GPIO_IsInputPinSet(GPIOH, LL_GPIO_PIN_3)) { //перезагрузка микроконтроллера NVIC_SystemReset(); } if (led) { led = false; digitalWrite(LED, HIGH); } else { led = true; digitalWrite(LED, LOW); } delay(250); i++; Serial.print(i); }