- 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
で書きこみ。

