コンテンツをスキップ

UIAPduino Pro Micro CH32V003 V1.4General Availability ​

概要

  • 48MHzで動作するCH32V003を採用し、Arduino IDEでのコーディングをサポートします。
  • 1つのUSB Type-Cで電源供給とプログラムの書き込みを行えます。
  • USB 2.0 Low-Speedデバイスとして動作し、HIDデバイスを作成できます。
  • オンボードヒューズでUSBポートを強力に保護します。
  • 3.3Vまたは5V(初期値)から選択可能なマイクロコントローラ用電源を備えています。
  • CN2が未実装の場合は高さ2.0mm/ピッチ2.54mmのコンスルーⓇで接続できます。
  • 底面がフラットなので表面実装部品のように取り付けることができます。
  • オープンソースソフトウェアかつオープンソースハードウェアです。
  • RoHS準拠、日本設計、全数検査、無期限保証です。

はじめる ​

危険回避のために

  • 低抵抗な梱包の帯電・静電気 防止袋(桃色、青色、銀色)をボードの下に敷いてはいけません。
  • 手順で示されるまでボードをUSBポートへ接続してはいけません。短絡リスクを低減するためです。

ボードの内蔵LEDを点滅させるプログラム(スケッチ)を書き込み、開発操作手順を確認します。

動作確認済み環境

  • OS: Windows 10 / Windows 11 / Ubuntu 22.04 LTS / Ubuntu 24.04 LTS / Ubuntu 26.04 LTS / Debian / Arch Linux
  • USBホストコネクタ: USB 2.0 Type-A / USB 3.2 Type-C
  • Arduino IDE: 2.3.2 / 2.3.3 / 2.3.4 / 2.3.5 / 2.3.6 / 2.3.7 / 2.3.8 / 2.3.9 / 2.3.10

既知の問題点

Windows ​

ボードの追加と書き込み ​

Arduino IDEを起動し、ファイル -> 基本設定 -> 追加のボードマネージャのURL にhttps://github.com/YuukiUmeta-UIAP/board_manager_files/raw/main/package_uiap.jp_index.jsonを追記します。ツール -> ボード -> ボードマネージャ でuiapと検索し、UIAPduinoをインストールします。

ツール -> ボード -> UIAPduino -> Pro Micro CH32V003を選択します。他の設定項目は全てデフォルトです。ファイル -> スケッチ例 -> 01.Basics -> Blink でLEDを点滅させるサンプルスケッチを開き、setup()の前に#define LED_BUILTIN 2を追記します。

cpp
// Define the built-in LED pin before setup()
#define LED_BUILTIN 2

// the setup function runs once when you press reset or power the board
void setup() {
  // ...
}

リセットボタンを押しながらボードをPCのUSBポートへ接続し、リセットボタンをすぐに離します。ボードは書き込みを待機します。OSがデバイスのセットアップを完了したあとに、Arduino IDEの書き込みでスケッチを書き込みます。Image written.と表示されたら書き込み完了です。

トラブルシューティング

  • 通信にシリアルポートを使わないため、Arduino IDEのステータスバーは常に未接続と表示します。
  • OSがデバイスのセットアップを完了したあとに、ボードが「デバイス マネージャー」で「HID 準拠デバイス」として追加されない場合はMicrosoft Visual C++ 再頒布可能パッケージのインストールが必要です。また、一部のPCでは、インストールされていない場合に書き込みできないことがあります。
  • 同じPCでも一部のUSBポートから書き込みできないことがあります。USBポートの変更またはUSBハブの追加で改善することがあります。また、給電専用のUSBケーブルでは書き込みも通信もできません。
  • 書き込みを待機しているボードが2つ以上接続されている場合は書き込みできません。これは書き込み対象を区別できないためです。なお、プログラムを実行しているボードは無関係です。
  • 工場出荷時設定のカスタムブートローダを最新に書き換えると、通信が安定することがあります。
  • 不定電位のもの(素手や大きな金属)がボードに接触すると、通信が不安定になることがあります。
  • WindowsではOSのバージョンまたはアップデートが古いと、通信が不安定になることがあります。

動作確認 ​

プログラム(スケッチ)を実行する方法は次の3つです。いずれかの手順でボード中央のオレンジ色LEDが1秒ごとに点灯/消灯を繰り返していれば正常動作です。

  • 書き込み後にリセットボタンを押します。
  • リセットボタンを押さずにUSBポートへ接続します。
  • 市販のUSB充電器(ACアダプタ)へ接続します。

ボードへの給電をやめたあとにボードを書き込み待機させると再度スケッチを書き込めます。

USBポートへの挿し直しをせずに動作モードを切り替え(シームレススイッチ)する方法もあります。

LinuxとMac ​

LinuxではWindowsと同様に操作し、UIAPduinoボードをインストールしたあとに次のコマンドを実行します。このコマンドはUIAPduinoに対応するudevルールを追加し、ルールを再読み込みして既存デバイスにも適用します。なお、Arch Linuxからの書き込みは不安定です。

bash
# Do this command after UIAPduino board was installed.
sudo wget -O /etc/udev/rules.d/99-minichlink-uiap.rules https://raw.githubusercontent.com/YuukiUmeta-UIAP/ch32fun/3bfa603f11d493710f2a811b5a2dfad905d9425c/minichlink/99-minichlink-uiap.rules
# Reboot or do this command if needed.
sudo udevadm control --reload-rules && sudo udevadm trigger

minichlinkが原因で書き込みできない場合は、環境に合わせてビルドして~/.arduino15/packages/UIAP/tools/minichlink-2982dfd/1.0.0/minichlinkを置き換えます。

Macでは、動作しますが煩雑です。UIAPduinoをMacで使う。With WCH-LINKEやUIAPduino Pro Micro CH32V003 V1.4 に M1 MacのArduinoIDEで書き込むを参照します。

デバッグする ​

Arduino IDE向け ​

Serial.print()で出力されるUARTをUSBシリアル変換モジュールを使ってシリアルモニタに表示します。詳細は創造技術実習 UIAPduinoでシリアル通信を参照します。

usb_cdc_uartはCH32V003をUSBシリアル変換器にします。つまり、ボードが2つ以上あれば1つのボードをUSBシリアル変換モジュールにしてデバッグできる可能性があります。現在、不完全です。

その他の開発環境向け ​

AI支援コーディングDraft ​

電源接続についてのAIの提案は、ドキュメントを参照して安全であることを必ず確認します。

ドキュメント読み込み方式 ​

このWEBドキュメントを対話式AIに読み込ませて、コーディングを提案させます。次のリストは主要なAIに自然言語でプロンプトした結果です。また、曖昧な表現やタイプミスのあるプロンプトが30回以上試されましたが、全てのコードが実機で動作しました。

最終的にこのWEBドキュメントは正規化され、正確にバイブコーディングできるようになります。

ダイレクトターミナル方式 ​

ダイレクトターミナル方式AIの支援で高度なインタラクティブアプリケーションをコーディングします。現在、概念実証のみです。ミニゲームコンソールをGemini CLIの支援でカスタムしたGemini CLI(無料枠)だけで携帯ゲーム向けの2048が作れた!を参照します。

ドキュメント ​

ボードレイアウトはSparkFun Qwiic Pro Micro - USB-C (ATmega32U4)とおおよそ互換します。

ピン配置図

ボード寸法

  • ピンに対するQwiicの位置は同じです。
  • USB Type-Cレセプタクルについて
    • コネクタ開口部はボード端に揃います。
    • ボード底面まで潜ります。これより背の高い部品はありません。
  • スルーホール穴径はコンスルーⓇ適合です。

WARNING

  • 左側の7、8、9ピンと右側の7、8、9ピンは共通です。ボードの内部で接続されています。
  • 11ピンを使用するにはpinV32_DisconnectDebug(PD_1)が必要です。SWIOが無効化されます。

回路とボード ​

PCB回路図Eagle Projectをダウンロード

BOM(部品表)
NameValueJLCPCB Part #Quantity
F106H1100DC1823031
F2, F3, F4, F5JK-SMD0603-001C26871144
C1, C2, C3CL05A105KA5NQNCC529233
C4, C5CL05B104KO5NNNCC15252
C6, C70402B221K500NTC15302
R1, R3, R8, R9, R110402WGF5101TCEC259055
R20402WGF5100TCEC251231
R4, R50402WGF2201TCEC258792
R6, R70402WGF2200TCEC250912
R100402WGF1001TCEC117021
D11N4148WSC21281
ZD1, ZD2BZT52C3V3SC51901642
LED1XL-1608UBC-04C9658071
LED2, LED3XL-1608UOC-04C9658012
U1XC6206P332MR-MSC52528991
U2CH32V003F4U6C52999081
SW1TS-1187A-B-A-BC3188841
CN1USB-TYPE-C-016C29270361
CN2SM04B-SRSS-TB(LF)(SN)C1604041

ユーザライブラリ ​

CADソフトウェアライブラリバージョン
EAGLE
Autodesk Fusion
UIAP-Devices.lbr1.0.0, 2025/06/17
BSch3VUIAP-Devices.LB31.0.0, 2025/06/17
KiCadUIAP-Devices.kicad_sym
UIAP-Devices.pretty.tar
1.0.0, 2025/06/19
FritzingUIAP-Devices.fzbz1.0.0, 2025/09/15

リポジトリからダウンロード

工場出荷時設定 ​

cnlohr/rv003usbをベースとしたカスタムブートローダが書き込まれています。これはタイムアウト調整とシームレススイッチ対応と製品区別のためです。また、ボード中央のオレンジ色LEDが ろうそく のように点灯するユーザプログラムが書き込まれています。

ボードの電源について ​

一般的に、予備知識のない電源の取り扱いは危険です。USBホストを破損する可能性があります。

USB Type-CのVBUSと5V出力ピンはオンボードヒューズを介してボードの内部で電気的に接続されています。また、ボードのUSB Type-CはUSB PD対応の充電器からも受電できます。

電圧変更 ​

電圧選択ジャンプパッドはボードの電源電圧を3.3Vまたは5V(初期値)に切り替えます。次に留意します:

安全に給電する ​

次の表で、左側の見出しから設定項目の行を探します。その行で他の設定の安全性を読み取ります。

ボードへの電力供給条件の組み合わせ
USB給電電圧選択外部給電
なしあり3.3V5V3.3V5VGND*1
USB給電なしN/A安全安全*2安全安全
ありN/A安全安全危険安全
電圧選択3.3V外部給電なしで安全N/AUSB給電なしで安全安全
5V外部給電なしで安全N/AUSB給電なしで安全安全
外部給電3.3V安全危険安全安全*3危険安全
5V安全危険安全安全危険安全
GND*1上の条件を満たしていれば安全
*1 共通GND接続です。 *2 安全ですが、外部給電が3.3Vの場合は5Vを使用できません。 *3 安全ですが、5Vは使用できません。

消費電流 ​

全てのボード上のLEDを点灯するスケッチが書き込まれたボードに、給電専用のUSBケーブルで5.00Vを給電したさいの標準的な消費電流です。LEDの詳細は眩しさ防止を参照します。

電圧選択: 3.3V電圧選択: 5V
LED1(電源ON)0.1 mA0.1 mA
LED2(USB信号)0.1 mA0.1 mA
LED3(内蔵LED)0.4 mA0.6 mA
U2(CH32V003)6.5 mA8.8 mA
その他1.5 mA1.5 mA
ボード全体8.6 mA11.1 mA

WEBブラウザツールDraft ​

例えば、このボードを利用するあなたのアプリケーションが多くの人に使われる場合、バイナリファイルのユーザ配布のみでアプリケーションのプログラムをアップデートできます。

WEBブラウザにWebHIDの対応が必要です。スマートフォンの主要WEBブラウザはWebHID未対応です。

スマートフォン(Androidのみ)からバイナリファイルを書き込みできる専用アプリを開発しています。

Subjective-Reality-Labs/WebLink_USBはバイナリファイル書き込みとターミナル接続ができるツールで、npmでビルドできます。オリジナルより古いWebLink-USB(ミラーサイト)は不完全です。

  • バイナリファイル書き込み: ボードを書き込み待機させ、connectで32V003を選択します。Select binaryでバイナリファイルを指定し、flashで書き込みます。
  • ターミナル接続: demo_terminalを書き込んだボードをプログラム実行モードでUSB接続すると、内蔵LEDが点滅します。その後、tタブのconnect to the terminalでCNLohr RV003 Custom Deviceを選択してターミナルへ接続します。内蔵LEDの点滅カウントアップとsendした文字列のリターンがターミナルに表示されます。

rv003usb webflasher ​

ベースのSadaleNet/rv003usb-webflasherはシンプルなバイナリファイル書き込みツールで、単一のJavaScriptライブラリのみで機能します。ボードを書き込み待機させ、ファイルを選択でバイナリファイルを指定し、Flash! (pick rv003usb)で32V003を選択して書き込みます。

テクニックノート ​

シームレススイッチ ​

書き込み待機モードとプログラム実行モードとをUSBポートへの挿し直しをせずに切り替え(シームレススイッチ)します。これら以外にもシームレススイッチできる仕組みがあるかも知れません。

リセットボタンで ​

スケッチのsetup()に3行のコードを追記すると、リセットボタンの機能が「リセット」から「シームレススイッチ」に切り替わります。

cpp
// the setup function runs once when you press reset or power the board
void setup() {
  if (FLASH->STATR & (1<<14)) NVIC_SystemReset();
  SystemReset_StartMode(Start_Mode_BOOT);
  pinMode(PD4, OUTPUT);
  // ...
}

USBホストの仕組みで ​

ブートローダを次のように変更したものに書き換えると、USBハブからの給電と通信を有効化/無効化するコマンドでシームレススイッチします。物理的な操作が不要になります。

  • ボードの電源ON直後にUSBホストから通信がある場合は書き込み待機モードになります。
  • ボードの電源ON直後にUSBホストから通信がない場合はプログラム実行モードになります。
動作を変更したブートローダをソースコードからビルドする

ch32fun開発環境でを読み、「最新のオリジナルch32fun開発環境ではじめる」のガイドに従って「ビルドツールと依存ライブラリのインストール」のみを実施します。その後、次の手順でビルドします。

bash
git clone https://github.com/YuukiUmeta-UIAP/rv003usb.git
cd rv003usb
git checkout 7ae2940676df0e1dcdad906ea7b1c9fff6c0b971
git submodule update --init --recursive
cd bootloader
cpp
  NVIC_EnableIRQ( EXTI7_0_IRQn );

  // if (!(RCC->RSTSCKR & (1<<26)))
  //   boot_usercode();

  // Bootloader timeout / localpad:
bash
make bootloader.bin

USBハブの給電と通信を有効化/無効化するにはUSBハブがPower Switchingに対応する必要があります。

Raspberry Pi 3 Model B+から ​

Raspberry Pi 3 Model B+では下図で示すUSBポート(Raspberry Piをコネクタ側面から見て左上のポート)でのみ動作します。これは、Raspberry Piのハードウェア設計上の制限によるものです。

ブートローダを書き換えたボードを図示のUSBポートへ接続し、次のコマンドで操作します。

bash
# This code ran on Raspberry Pi 3 Model B+ Rev 1.3, Actually.
# Need uhubctl: `sudo apt install uhubctl` or build from https://github.com/mvp/uhubctl
sudo apt install uhubctl

# Go Run-Mode
sudo uhubctl --loc 1-1 --ports 2 --action 0   # Bus power off
sudo uhubctl --loc 1-1.1 --ports 2 --action 0 # Disable signal from host
sudo uhubctl --loc 1-1 --ports 2 --action 1   # Bus power on

# Go Boot-Mode
sudo uhubctl --loc 1-1 --ports 2 --action 0   # Bus power off
sudo uhubctl --loc 1-1.1 --ports 2 --action 1 # Enable signal from host
sudo uhubctl --loc 1-1 --ports 2 --action 1   # Bus power on

おそらく、内蔵USBハブのある他のRaspberry Piモデルでも同様に動作します。

眩しさ防止 ​

夜間のベッドルームなどではLEDが眩しく感じます。ボード上のLEDはジャンプパッドをカットすることで消灯できます。

機能色回路図ジャンプパッド備考
電源ON青LED1CUT1
USB信号オレンジLED2CUT2カットしてもUSB通信可能
内蔵LEDオレンジLED3CUT32ピンがハイインピーダンス化

USBホストのCC読み取り ​

USBデバイスはCC1またはCC2のアナログ電圧を読み取り、USBホストの給電できる電流を計算的に知ることができます。これはUSB Type-Cの機能です。詳細はUSB規格を参照します。

ボードのCC1ジャンプパッドとCC2ジャンプパッドを はんだ でブリッジすると、CC1とCC2はボードのアナログ入力とGPIOの兼用ポートへ接続されます。CC1とCC2はボード上で5.1kΩ ±1%にプルダウンされています。

VBUSのオンボードヒューズの溶断電流は1Aです。一般的にはその半分がヒューズの連続定格電流です。

ボードをデバッガにする ​

rvswdio programmerを書き込まれたCH32V003はminichlinkから操作できるWCH RISC-Vチップのデバッガになります。完全互換しませんが、基本的にはWCH-LinkEが不要になります。つまり、全ての開発で、専用デバイスドライバが不要になり、かつ、開発環境がOSSW/OSHWになります。

次の配線では、カスタムrvswdio programmerを書き込まれた左のボードがジャンパのみで接続された右のボードのデバッガとして機能します。単独チップへの接続はREADME.mdを参照します。

bash
minichlink -3         # Supply power, not '5' option
minichlink -t         # Stop power, not 'f' option
minichlink -C funprog # Specify rvswdio programmer if others exist.
UIAPduinoに合わせたカスタムrvswdio programmerをソースコードからビルドする

ch32fun開発環境でを読み、「最新のオリジナルch32fun開発環境ではじめる」のガイドに従って「ビルドツールと依存ライブラリのインストール」のみを実施します。その後、次の手順でビルドします。

bash
git clone https://github.com/YuukiUmeta-UIAP/rv003usb.git
cd rv003usb
git checkout 7ae2940676df0e1dcdad906ea7b1c9fff6c0b971
git submodule update --init --recursive
cd rvswdio_programmer
cpp
//        PC4 = MCO (optional)
//
// #define RVBB_REMAP 1 // To put SWD on PC1/PC2

#define IRAM_ATTR
cpp
#define USB_PIN_DP 3   // [0-4] GPIO Number for USB D+ Pin
#define USB_PIN_DM 4   // [0-4] GPIO Number for USB D- Pin
#define USB_PIN_DPU 4  // [0-7] GPIO for feeding the 1.5k Pull-Up on USB D- Pin; Comment out if not used / tied to 3V3!

#define RV003USB_DEBUG_TIMING      0
bash
make rvswdio_programmer.bin

ブートローダ書き換えDraft ​

ブートローダの書き換えを失敗するとボードは使用できなくなります。不用意に書き換えてはいけません。

ブートローダの書き換え方法は次の3つです。操作は簡単ですが、失敗するとボードは使用できなくなります。失敗を意図せずに書き換えを失敗した場合の不良動作は無期限保証の対象です。

アプリケーション例 ​

Arduino IDEで ​

標準開発スタイルです。Arduinoコアのopenwch/arduino_core_ch32は最適化が進んでいないため、バイナリファイルサイズは大きいです。コーディング方法はドキュメントを参照します。

ch32fun開発環境で ​

非標準の開発スタイルで、PlatformIO対応です。cnlohr/ch32funは最適化が進んでいるため、バイナリファイルサイズは小さいです。Arduino環境では不十分な場合や、HIDを使う場合に使用します。

最新のオリジナルch32fun開発環境ではじめる: CUIでビルドと書き込みをします。Linux推奨です。

Ubuntu 24.04 LTSでの開発環境構築手順です。OSごとの詳細手順はInstallationを参照します。

ビルドツールと依存ライブラリをインストールし、オリジナルのch32funリポジトリをクローンします。

bash
sudo apt install build-essential libnewlib-dev gcc-riscv64-unknown-elf libusb-1.0-0-dev libudev-dev gdb-multiarch
git clone https://github.com/cnlohr/ch32fun.git

udevルールを追加し、書き込みツールのminichlinkをビルドします。Windows向けにはビルド済みのminichlink.exeとlibusb-1.0.dllもあります。ここまでの手順は1回のみ実施します。環境構築は完了です。

bash
make -C ch32fun/minichlink all

カレントディレクトリをLEDを点滅させるサンプルプログラムのディレクトリに変更します。

bash
cd ch32fun/examples/blink

blink.cの一部をコメントアウトしてUIAPduinoのLEDに対応し、上書き保存したあとにビルドします。

cpp
int main()
{
  SystemInit();

  funGpioInitAll(); // Enable GPIOs

  // funPinMode( PIN_1,     GPIO_Speed_10MHz | GPIO_CNF_OUT_PP ); // Set PIN_1 to output
  // funPinMode( PIN_K,     GPIO_Speed_10MHz | GPIO_CNF_OUT_PP ); // Set PIN_K to output
  // funPinMode( PIN_BOB,   GPIO_Speed_10MHz | GPIO_CNF_OUT_PP ); // Set PIN_BOB to output
  funPinMode( PIN_KEVIN, GPIO_Speed_10MHz | GPIO_CNF_OUT_PP ); // Set PIN_KEVIN to output

  while(1)
  {
    // funDigitalWrite( PIN_1,     FUN_HIGH ); // Turn on PIN_1
    // funDigitalWrite( PIN_K,     FUN_HIGH ); // Turn on PIN_K
    // funDigitalWrite( PIN_BOB,   FUN_HIGH ); // Turn on PIN_BOB
    funDigitalWrite( PIN_KEVIN, FUN_HIGH ); // Turn on PIN_KEVIN
    Delay_Ms( 250 );
    // funDigitalWrite( PIN_1,     FUN_LOW );  // Turn off PIN_1
    // funDigitalWrite( PIN_K,     FUN_LOW );  // Turn off PIN_K
    // funDigitalWrite( PIN_BOB,   FUN_LOW );  // Turn off PIN_BOB
    funDigitalWrite( PIN_KEVIN, FUN_LOW );  // Turn off PIN_KEVIN
    Delay_Ms( 250 );
  }
}
bash
make blink.bin

ボードを書き込み待機させ、minichlinkでボードのVIDとPIDとバイナリファイルを指定して書き込みます。bは書き込み後にプログラムを実行するオプションです。ボード中央のオレンジ色LEDが点滅します。

bash
../../minichlink/minichlink -c 0x1209b803 -w blink.bin flash -b
オリジナルch32fun開発環境とPlatformIOではじめる: GUIでOS非依存です。ツールは少し古いです。

導入はオリジナルリポジトリのVSCode +/- PlatformIOを参照します。ch32fun/platformio.iniを次のように変更し、書き込みツールと書き込み対象をそれぞれminichlinkとUIAPduinoのVIDとPIDにします。

ini
[env]
platform = https://github.com/Community-PIO-CH32V/platform-ch32v.git
monitor_speed = 115200
; default upload and debug protocol is "wch-link", using OpenOCD and
; expecting a WCH-LinkE programming adapter.
; To use minichlink, uncomment this
upload_protocol = minichlink
; additionally uncomment this to use ardulink on a specific COM port
upload_flags =
  -c
  0x1209b803

; for examples that use ch32fun as their base

VSCode +/- PlatformIOに従いProject Environment Switcherでenv:blinkを選択します。ch32fun/examples/blink/blink.cの一部をコメントアウトしてUIAPduinoのLEDに対応し、上書き保存します。

cpp
int main()
{
  SystemInit();

  funGpioInitAll(); // Enable GPIOs

  // funPinMode( PIN_1,     GPIO_Speed_10MHz | GPIO_CNF_OUT_PP ); // Set PIN_1 to output
  // funPinMode( PIN_K,     GPIO_Speed_10MHz | GPIO_CNF_OUT_PP ); // Set PIN_K to output
  // funPinMode( PIN_BOB,   GPIO_Speed_10MHz | GPIO_CNF_OUT_PP ); // Set PIN_BOB to output
  funPinMode( PIN_KEVIN, GPIO_Speed_10MHz | GPIO_CNF_OUT_PP ); // Set PIN_KEVIN to output

  while(1)
  {
    // funDigitalWrite( PIN_1,     FUN_HIGH ); // Turn on PIN_1
    // funDigitalWrite( PIN_K,     FUN_HIGH ); // Turn on PIN_K
    // funDigitalWrite( PIN_BOB,   FUN_HIGH ); // Turn on PIN_BOB
    funDigitalWrite( PIN_KEVIN, FUN_HIGH ); // Turn on PIN_KEVIN
    Delay_Ms( 250 );
    // funDigitalWrite( PIN_1,     FUN_LOW );  // Turn off PIN_1
    // funDigitalWrite( PIN_K,     FUN_LOW );  // Turn off PIN_K
    // funDigitalWrite( PIN_BOB,   FUN_LOW );  // Turn off PIN_BOB
    funDigitalWrite( PIN_KEVIN, FUN_LOW );  // Turn off PIN_KEVIN
    Delay_Ms( 250 );
  }
}

udevルールを追加します(Linuxのみ)。ボードを書き込み待機させ、PlatformIOのGeneral -> Uploadで書き込みます(ビルドも自動的にされます)。書き込みが完了するとボード中央のオレンジ色LEDが点滅します。

リセットボタンでシームレススイッチ: funGpioInitAll()のあとに次のコードを追記します。
cpp
int main()
{
  SystemInit();

  funGpioInitAll(); // Enable GPIOs

  if (FLASH->STATR & (1<<14)) NVIC_SystemReset();
  FLASH->KEYR = FLASH_KEY1;
  FLASH->KEYR = FLASH_KEY2;
  FLASH->BOOT_MODEKEYR = FLASH_KEY1;
  FLASH->BOOT_MODEKEYR = FLASH_KEY2;
  FLASH->STATR |= (1<<14);
  FLASH->CTLR = CR_LOCK_Set;
  funPinMode( PD4, GPIO_CFGLR_OUT_10Mhz_PP );

  // funPinMode( PIN_1,     GPIO_Speed_10MHz | GPIO_CNF_OUT_PP ); // Set PIN_1 to output
  //...
}

ユーザ活用事例 ​

教育機関 ​

創造技術実習 ​

クリエイタとホビイスト ​

リファレンス ​

CH32V003 ​

Tips ​

DIY ​

開発スタック ​

USBで ​

Arduinoで ​

Rustで ​

Pro Micro ​

USB ​

以前のバージョン ​

コントリビュータ ​

ハードウェアレビュー

提案

  • Masashi Sasaki
  • Kojo Kimura
  • Tomoyuki Dansako

ソフトウェア実装

  • CNLohr, and his community members

注意事項 ​

  1. UIAP製デバイスはホビー用品です。UIAP製デバイスを生命や安全に影響する可能性のある用途には絶対に使用しないでください。これらに使用して生じた全ての損害についてUIAPは一切責任を負いません。

  2. 全数検査は不良品のないことを保証するものではありません。また、UIAP製デバイスの保護素子や保護回路は接続されたデバイスを破損しないこと保証するものではありません。

  3. UIAP製デバイスは、データシート等の関連資料に記載された絶対最大定格および仕様の範囲内で使用してください。誤接続、過電圧の印加、ショート、改造など、使用者の誤用や不適切な取り扱いによって生じた発熱、発火、破裂、およびそれらに起因する全ての損害についてUIAPは一切責任を負いません。

  4. UIAP製デバイスを組み込んだアプリケーションは使用者の責任で利用、配布、製造、販売、輸出入してください。

  5. 本資料はUIAP製デバイスの動作例や応用例を説明するものです。本資料の情報を使用する場合、使用者の責任でクローン・フォーク・アプリケーションを設計・製造してください。本資料の情報を使用して生じた全ての損害についてUIAPは一切責任を負いません。

  6. 本資料またはUIAP製デバイスの不明点について、正確な情報が必要な場合はUIAPへ直接お問合せください。

  7. 本注意事項は予告なく変更され、変更されても通知されません。また、本資料またはUIAP製デバイスの使用は、使用者が本注意事項を理解しているとみなされることに同意するものとします。

最終更新 2026/09/01