STM32 CubeHAL用のクラスライブラリ『紫』の試験用にNucleo H743ZIを購入しました。ところがこれがとんだ難物でした。
試しに紫のテストプログラムを流してみましたが、こいつが文字通りうんともすんとも言いません。シリアル・ターミナルにメッセージが出てこないのです。調べたところUART送信後にエラー割り込みが起きています。不審に思って、紫抜きのCubeMXから生成したほやほやのスケルトンで試験したところ、UART送信後にやはりエラー割り込みが起きています。なんでやねん!
検索したところでは、これは定番の問題のようです。H743には大量のSRAMが存在します。そのうちの一つはCPUコアと直結するDTCMで、直結しているゆえにペリフェラルからのDMAアクセスができません。
Unfortunately this memory is used as default in some projects including examples.
FAQ: DMA is not working on STM32H7 devices
Unfortunatelyと、他人事みたいに言ってますがCubeMXが吐いたコードです。
「まず動かしてから最適化しろ」
は鉄則です。STとしてはせっかく高速動作するDTCMを実装したのでそれを使って欲しかったのでしょうけど、使い出したユーザーが
「Lチカは動作するのにシリアルが動かないぞ」
と半日頭をひねるようなスケルトンは本末転倒です。深いため息とともに終わった話でした。