- Type-C コネクタ
- 25MHz / 32.768 kHz 水晶つき
- NRST / BOOT ボタン
裏面に WeAct と書いてあった。
何もせずそのまま USB に繋ぐとシリアルポートとして認識される。
Bus 020 Device 025: ID 0483:5740 STMicroelectronics STM32 Virtual ComPort
00:01:10,04012019 VrefintAdc: 1.2133V TempSensorAdc: 24.75C FlashID:0 ERROR!
こういう出力がずっと流れている。
プログラム方法
この MCU は System Memory という領域を持っており、ブートローダーが最初から書きこまれている。詳細は AN2606
USB 経由で DFU するには、基板上の BOOT0 を押しながら、NRST を押せば良い。
Bus 020 Device 008: ID 0483:df11 STMicroelectronics STM32 BOOTLOADER Serial
として認識される。
platformio
https://docs.platformio.org/en/latest/boards/ststm32/blackpill_f401cc.html
blackpill_f401cc というのがある。たぶんこれなので、一旦これで試す。
platformio init --board=blackpill_f401cc
残念ながら mbed framework が使えないみたいなので、一旦 arduino でいく src/main.cpp
#include "Arduino.h"
#ifndef LED_BUILTIN
#define LED_BUILTIN 13
#endif
void setup() {
pinMode(LED_BUILTIN, OUTPUT);
}
void loop() {
digitalWrite(LED_BUILTIN, HIGH);
delay(500);
digitalWrite(LED_BUILTIN, LOW);
delay(500);
}
pio run
.pio/build/blackpill_f401cc/firmware.bin ができるので、BOOT0 を押しながら NRST を押し、USB DFU モードにする。この状態で dfu-util で書きこめる。
dfu-util -d 0483:df11 -a 0 -s 0x08000000:leave -D .pio/build/blackpill_f401cc/firmware.bin
mbed のカスタムボード定義
とりあえず mbed のほうが好みなので mbed を使えるようにしてみる。こういうことするとハマりやすいのであまりよくないが…
403 Forbidden に従いながらカスタムボードを定義する。
platformi.ini
[env:f401cc] platform = ststm32 board = f401cc framework = mbed build_flags = -I$PROJECTSRC_DIR/TARGET_F401CC
boards/f401cc.json
# https://github.com/platformio/platform-ststm32/blob/develop/boards/blackpill_f401cc.json をコピペ
custom_targets.json https://github.com/ARMmbed/mbed-os/blob/e1c3de649dd9c16d9548f73b4bbb71858af904f7/targets/targets.json#L4834 から抜き出してコピペ
{ "F401CC": { "inherits": ["FAMILY_STM32"], "core": "Cortex-M4F", "default_toolchain": "GCC_ARM", "extra_labels_add": [ "STM32F4", "STM32F401", "STM32F401xC", "STM32F401VC" ], "supported_toolchains": ["GCC_ARM"], "device_has_add": ["MPU"], "device_name": "STM32F401CC" } }
cp -r ~/.platformio/packages/framework-mbed/targets/TARGET_STM/TARGET_STM32F4/TARGET_STM32F401xC/TARGET_DISCO_F401VC src/TARGET_F401CC
#include "mbed.h"
DigitalOut led(PC_13);
int main() {
for (;;) {
led = 1;
wait(0.2);
led = 0;
wait(0.2);
}
}
これで pio run が走って .pio/build/f401cc/firmware.bin ができるはず。
time dfu-util -d 0483:df11 -a 0 -s 0x08000000:leave -D .pio/build/f401cc/firmware.bin
で書きこみ。