STM32 CubeMX で生成した HAL_UART_Transmit_DMA がうまく動かないとき
トラブルシューティング
DMA ではない HAL_UART_Transmit は動くか試す。動かないなら UART の設定やピンを確認してみたほうが良い。
DMA すると何も動かんとき
generated code がうごかないじゃん…… となったら HAL_DMA_Init を最初にもってくると動くことがある。
とりあえず変更して試すなら適当に編集して試せば良い。が再生成するとき困るので、CubeMX 上でこの順番は変えておくのが良い。Project Manager → Advanced Settings にいくと順番を変更するUIがある。
最初の一回だけ成功するとき
UARTn global interrupt をオンにする。HAL_UART_IRQHandler あたりで送信の後処理とかをしているようで、この割込みが有効でないと最初の DMA 以降は HAL_BUSY となり成功しない。
関連エントリー
- BLE Nano + mbed の Serial の実装がつらい感じだった I2C がうまく動かなくて調べていたら、どうやら UART を使おうとすると競合するようでした。確かにピン配置を見ると CTS/RTS と ...
- NanoVNA のリモート化 (Wi-Fi 中継) アンテナの調整をする場合、給電点 (測定点) と調整点は離れていることが多いなというコンテキストで、NanoVNA の Bluetooth ...
- BLE Nano (nRF51822) でどうしても 1mA 以上電流食うぞというとき BLE Nano をあいかわらず触っている。どうしても消費電流の削減ができず3日ぐらい悩んだので、参考までに「どうすれば効率よく消費電流を削...
- STM32F103C8 で ChibiOS を使ってみる STM32F103C8 のやっすいボード (bluepill などと呼ばれているらしい) については数年前に書いた STM32F103 C8...
- Beagle Bone Black + Machinekit での CNC 制御 (Sable-2015) BBB と Machinekit (LinuxCNC/EMC2) での CNC 制御がようやく動いたので記録しておきます。 インターフェイス...