STM32マイコンを使い始めて約2週間が経過しました。これまで使用していた Arduino ではデバッガが使えなかったり Arduino の IDE をアップグレートする度に設定ファイルの構成が変わったり、ヘッダファイルが更新されてソフトウェアの互換性が損なわれたりしていました。また、Arduino内部の揉め事(あるいは裁判沙汰)もあり、辟易としていました。しかしながら、数多くの無料で使用できる有志が作成したライブラリや開発ドキュメントは明らかにArduinoを使うメリットと感じます。
STM32は素晴らしい性能や低価格(安いものだと1500円程度)で使用できる評価キット(Arduinoのメインボードのようなもの。STM32DiscoveryやSTM32Nucleoシリーズ)は魅力的で、しかも簡単にgdbベースのリモートデバッグ環境が構築できるところも惹かれるものがあります。一方で、STM32の標準的なライブラリとして位置付けられている STM32Cube についてはあまりにも情報が少ないです。ドキュメントは確かに存在するのですが、単にDoxygenで生成されたものでごく簡単な説明しか記載されていません。
例えば Description of STM32L0xx HAL drivers – STMicroelectronics に記載されている HAL_UART_Receive() の説明は Function Description: Receive an amount of data in blocking mode. という一文のみ。「えええぇぇ〜〜〜〜!」とびっくりしてしまいます。戻り値は Return values: HAL: status だけで何が返却されうるのか分からないし、引数 Timeout に 0 を指定した場合の挙動については触れられていませんし、時間単位の記述すらありません(ソースを確認したところ、Timeout値が0の場合は無条件にタイムアウトの扱いとなるようです。待ち時間なしで受信処理を行う場合は HAL_UART_Receive_IT() を使えということらしい)。ちなみに HAL_UART_Receive() に限らず他も含め全般に言えることです。APIについてはソースもありますしサンプル(Examples)もあるのでこれらを確認すれば分かるとは思いますが不親切ですね。 HAL drivers を開発者に使って欲しいと考えているのか疑ってしまいますし、STM32マイコンを少しでも沢山売りたいと思っているか甚だ疑問です。多分、小口の顧客は相手にしていないということでしょう。
電子工作相手にしているお店には Arduino と並んで STM32Discovery / STM32Nucleo も売っているのですが情報量には大きな開きがあります。ちなみに STM32Nucleo には Arduino とピン配置・レイアウトが同じものが備え付けられているのですが、 基本的には ソフトウェアには互換性がないので要注意です。
あと、 STMicroelectronics には一言言いたい。 STMicroelectronics という日本語のWEBページを作っているんだったらドキュメント類も日本語のものを用意してくれと。英語のドキュメントでも不親切なものが多いようだけどこのレベルでいいから日本語で書いたものを用意してくれたら、情報発信してくれる有志がもっと増えるのではないでしょうか。そうするとまわりまわってSTM32を使用したプロダクトがもっと増えるんじゃないかなあ。素人考えかな?