先週注文したstm32f4xxの基板が予定通り午前中に到着。動作確認を行うためCPU周りの最小限の部品だけ実装する。

プログラム書き込みは、いつものOLIMEXのARM-USB-OCDでもできるはずなのだが、ST-Linkも使用できることが分かったので買ってみた。秋月電子で2,500円だ。


[caption id="attachment_4361" align="alignright" width="300" caption="付属のよさげなケーブルはSTM32では使用不可"][/caption]接続するために資料を見ると、付属のよさげなケーブルはSTM-8でしか使用できないことが判明。厳密には、指す場所を変えればSTM-32でも使えるかもしれないが、ピンソケットに書かれた信号名が違ってしまうので使う気にならなかった。

ARM-USB-OCD用の自作ケーブルとジャンパーケーブルで接続。ST-Link UtilityをつなぐとCPUが認識されたので、これは順調かと思いきや、ハマってしまった。テストプログラムを書きこんでもLEDが点滅しない。

散々調べた挙句判明した原因は、ST-Linkとの接続ミス1箇所とスタートアップルーチンから予期せぬタイミングでSystemInit関数が呼び出されていたこと。 水晶の周波数を手持ちの部品の関係で設計値と違うものを使っていたので、pllの設定を行うSystemInit関数で引っかかることは予想できていたので、呼び出し部をコメントアウトして試していたつもりが、予期せぬ場所から呼ばれて止まっていた。

わかってしまえば、あとは順調で、コマンドプロンプトまで動作するようになった。
めでたしめでたし。