エレクトロニクス

 またはまりました。しかし、過去と違ってSTM32には強力なコミュニティがあるためWeb検索で何とかなっています。しかし、これはF4xxの記事では無いためか気づくのが遅くなりだいぶ時間を無駄にしました。

QiitaのSTM32 DMAを使ったUART通信ではまる(https://qiita.com/numeru55/items/fd61922eeec6be62a22a)という記事がヒットしてDMA->USARTの順番に変更することで一応動いたのですけど、リンク先をたどると最近更新された記事がありました。MX_DMA_Init order in the main.c file generated by STM32CubeMX, How to fix?
(https://community.st.com/s/question/0D53W00001EzCmCSAV/mxdmainit-order-in-the-mainc-file-generated-by-stm32cubemx-how-to-fix)
という英文記事でADCなどを動かすにはGPIO->DMA->RCC->その他(the rest.)にする必要があるそうです。

この問題のやっかいなところは、いくらプログラムの記述を見直してもわからず、CubeMXの設定を変更する必要があるところです。 Project Manager からAdvanced Settingsタブとわかりにくいところにあります。ついでに順番を変えるボタンも分かりにくいです(半分八つ当たり)。Qiitaの記事の方のようにF3xxにHALだけではなく、F4xx LLでも発生しているため機種やライブラリ依存はほとんどないかと思います。

やれやれ。