====== Щепа L432 ======
{{ :boards:l432-pinout.png?direct&600|}}
===== Характеристики =====
* Микроконтроллер: STM32L432KCU6
* Ядро: Arm Cortex-M4
* Частота ядра: 80 MHz
* Флэш память : 256 Кбайт
* ОЗУ: 64 Кбайт
* Напряжение питания: 1.65 V - 3.6 V
* Таймеры (4)
* SPI/I2S (2)
* I2C (2)
* USART (2)
* 12-bit АЦП, 10 каналов (1)
* GPIO (20)
* RTC
* USB Device (Type C)
* Выход для подключения отладчика
* Пользовательская кнопка (можно использовать для перехода в режим загрузчика)
===== Описание =====
Совместимость по выходам с 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);
[[https://github.com/Kits-Lab-Dev/wood-chips-L432|Github - схемы и примеры]]
===== Arduino IDE =====
Для работы с платой в [[https://www.arduino.cc/en/software|Arduino IDE]] нужно добавить ссылку для менеджера плат в меню ''Файл -> Параметры'' в строку: ''Дополнительные ссылки для Менеджера плат'':
https://github.com/stm32duino/BoardManagerFiles/raw/main/package_stmicroelectronics_index.json
{{ :boards:boards_manager.png?direct&400 |}}
В менеджере плат установить библиотеку ''STM32 MCU based boards'':
{{ :boards:arduino_ide_install_board.png?direct&400 |}}
Выбрать целевую плату
{{ :boards:arduino_ide_select_board.png?direct&400 |}}
{{ :boards:arduino_ide_select_board_part_number.png?direct&400 |}}
Выбрать режим загрузки скетча
{{ :boards:arduino_ide_select_uploads_method.png?direct&400 |}}
При необходимости подключить поддержку ''USB CDC'' - виртуальный com-порт:
{{ :boards:arduino_ide_select_usb_support.png?direct&400 |}}
Для прошивки контроллера понадобится [[https://www.st.com/en/development-tools/stm32cubeprog.html|STM32CubeProgrammer]] [[https://disk.yandex.ru/d/Fjw2cZVs_fMvog|без 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);
}
===== PlatformIO VSCode =====
Для работы с платой в среде [[https://code.visualstudio.com/|VSCode]] нужно установить расширение [[https://platformio.org/platformio-ide|PlatformIO]].
Создать новый проект, выбрать целевую плату и фреймворк:
{{ :boards:platformio_select_board.png?direct&400 |}}
В файле ''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
//Светодиод на 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);
}