STARM マイコン基板 (2)

おそらく、ベースボード (CQ-STRAMBB) を購入することはないでしょうが、ハードウェア・リソースの割り当ては、ベースボードと両立するように配慮します。
DWM 誌に掲載されているベースボードの回路図を見ると、PB8 に簡単な LPF および 1W 出力のオーディオ・アンプ (TS4871) が接続されています。
これは、PB8 のピンのオルタネート機能の、タイマ4、チャネル3の PWM 出力を利用したオーディオ出力であると考えられます。
そこで、FM音源プログラムでの PWM 出力も、このピンを利用することにしました。
タイマ4チャネル3で PWM 出力、タイマ3でサンプリング周期の割り込みを発生させるプログラムはできました。
内蔵ペリフェラルが接続されているバスは、APB1/APB2 の2種があり、APB1 は最大 36 MHz クロック、APB2 は最大 72 MHz で動作します。
タイマ3、4は 36 MHz の APB1 に接続されているのですが、入力クロックを2逓倍する機能があって、カウンタの入力クロックは 72 MHz になります。
10 ビット PWM として機能させるために 1024 分周しても、PWM の繰り返し周波数は約 70 kHz となり、LPF の負担が少なくてすみます。
プログラムの方ですが、サンプル・プログラムはうまく動くのに、新規プロジェクト作成で1から作ったプログラムでは、なかなかうまく動かず、ちょっとハマってしまいました。
リンカの出力リストを見ると、リンクする指示を出した覚えのないルーチンが多数リンクされていました。
うまく動いたサンプル・プログラムのプロジェクトオプションを見ると、「Target」タブの「Code Generation」のところの「Use microLIB」という項目にチェックが入っていました。
それを真似てみると、うまく動きました。
ヘルプを見てみると、「MicroLIB」はサイズを小さくするためにサポートする機能を制限したもので、デフォルトでは「Standard LIB」が使われるようです。
おそらく Standard LIB ではシステムに合わせて定義すべき関数がいくつかあるのに、それが定義されていないのが原因で、うまく動作しないんだと思います。