STM32F303Kで書き込めない
PlatformIOでの書き込みエラーが発生した時にどうすればいいか?とりあえず手順書を書きます。
まず試すべきこと
いつからかはわからないが何らかのアップデートの拍子でPlatformIOでF303Kに書き込めなくなったって人はこれを試そう。
platformio.ini
のupload_protocol
をmbed
に設定するだけです。
upload_protocol = mbed
これで大半は治ります。
これでも治らない時
とりあえず状況を整理します。
- 今まで書き込めていたけど書き込めない
- パソコンを変えたら書き込めない
- 初めての基板に書き込めない
今まで書き込めていたけど書き込めない
ST-LINKのファームウェアが何かの拍子に飛んだ可能性があります。一旦ファームウェアアップローダーを利用して焼き直してみると解決することがあります。
パソコンを変えたら書き込めない
ドライバーのインストールを忘れていませんか?インストールしないとうまく動かない場合がほとんどなのでWindows勢の人はインストールを忘れないようにしましょう。
また、PlatformIO自体の再インストールも効果があることがあります。これはVSCodeの拡張機能からのアンインストールだけでなく、ホームディレクトリにある.platformio
を確実に消した方が安全です。
初めての基板に書き込めない
まずST-LINKを正しく認識しているかを確認します。Windowsだったらデバイスマネージャーを見るだけです。Macだったらこのコメント叩くだけです。
% ls -l /dev/tty.*
これがだめだったらそもそもハードウェアが死んでる可能性大です。自作基板の場合、
- BOOT0の処理は正しいですか?
- NRSTの処理は正しいですか?
- 電源は供給されていますか?
だいたいこの三つが原因です。
他にも
僕が他にハマったことがある原因一覧です。
- MicroUSBケーブルが充電専用
- パソコンの許容電流量を超えてしまい、保護カイロが働いてしまって動かない
- 書き込めてはいるが、プログラムがフリーズしてるだけ
特に配列の要素外を参照して止まるのはあるあるなので一回メモリを安全に扱えているかチェックしてみてください。
終わりに
終わりです。