Перейти к содержимому

Щепа F042

  • Микроконтроллер: STM32F042K6T6
  • Ядро: ARM Cortex-M0
  • Частота ядра: 48 MHz
  • Флэш память : 32 Кбайт
  • ОЗУ: 6 Кбайт
  • Напряжение питания: 2.0 V - 3.6 V
  • Таймеры (6)
  • SPI/I2S (1)
  • I2C (1)
  • USART (2)
  • 12-bit АЦП, 10 каналов (1)
  • GPIO (20)
  • RTC
  • USB Device (Type C)
  • Выход для подключения отладчика
  • Пользовательская кнопка (можно использовать для перехода в режим загрузчика)

Совместимость по выходам с NUCLEO-F042K6, USB подключен к микроконтроллеру (GPIO: PA11/PA12) для работы в режиме USB Device или встроенного загрузчика DFU. Для перехода в режим DFU нужно включить питание платы либо активировать RESET с нажатой кнопкой SW1. Для быстрого перехода в режим загрузчика можно активировать прерывание по выводу PB6(D5) (к нему подключена пользовательская кнопка) для этого нужно в функцию void setup() вставить код:

pinMode(5, INPUT);
attachInterrupt(5, NVIC_SystemReset, RISING);

Github - схемы и примеры

Для работы с платой в 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
//Кнопка на D5
#define BUTTON 5
void setup() {
//Подключение пользовательской кнопки для быстрой перезагрузки и входа в режим загрузчика (DFU)
pinMode(BUTTON, INPUT);
pinMode(LED, OUTPUT);
// Запуск USB Device в режиме CDC (виртуальный COM-порт)
SerialUSB.begin();
}
bool led = false;
int i = 0;
void loop() {
// проверка нажата ли кнопка
if (digitalRead(BUTTON) == HIGH) {
//перезагрузка микроконтроллера
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_f042k6]
platform = ststm32
board = nucleo_f042k6
framework = arduino
upload_protocol = dfu
build_flags =
-D PIO_FRAMEWORK_ARDUINO_ENABLE_CDC
-D USBCON
#include <Arduino.h>
//Светодиод на D13
#define LED 13
//Кнопка на D5
#define BUTTON 5
void setup() {
//Подключение пользовательской кнопки для быстрой перезагрузки и входа в режим загрузчика (DFU)
pinMode(BUTTON, INPUT);
pinMode(LED, OUTPUT);
// Запуск USB Device в режиме CDC (виртуальный COM-порт)
SerialUSB.begin();
}
bool led = false;
int i = 0;
void loop() {
// проверка нажата ли кнопка
if (digitalRead(BUTTON) == HIGH) {
//перезагрузка микроконтроллера
NVIC_SystemReset();
}
if (led) {
led = false;
digitalWrite(LED, HIGH);
} else {
led = true;
digitalWrite(LED, LOW);
}
delay(250);
i++;
Serial.print(i);
}