====== Щепа 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); }