トラブルシューティング

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 となり成功しない。

  1. トップ
  2. tech
  3. STM32 CubeMX で生成した HAL_UART_Transmit_DMA がうまく動かないとき
▲ この日のエントリ