はじめに
前回はすごく簡単なUARTのHelloWorldをやったので今回は受信とかやってみようと思う。
ちなみに前回の記事はコレ
gsmcustomeffects.hatenablog.com
CubeMXの設定は前回と同じ
Ac6での作業
今回やること
- 'a'を受け取ったらボード上のLEDが点灯
- 'b'を受け取ったらボード上のLEDが消灯
- それ以外だとUARTでOther Key Pressedの文字を返す
前回は送信だけだったが受信は受け取り側のバッファ確保が必要となるのでそれっぽい配列を確保しとく
僕はこの辺に追加しました
UserCodeBeginとかの間にコード書いとくとCubeで再度出力したときに消えないので便利です。
んであとは無限ループ内でコードを書いていくだけ今回は受信APIを使うのでそれについて少し
HAL_UART_Receive(&huart2,(uint8_t *)rxbuf, sizeof(rxbuf), 0xF);
ほとんど送信APIと使い方は同じだが、最後のタイムアウト時間で送信の場合自発行為なのでタイムアウトすることがほとんどない。
受信の場合向こうからくるまでプログラムが止まるので注意しないといけない。
特に何も考えずにFFFFとかにするとめっちゃ止まる。
基本この辺は割り込みでレジスタ見に行くのでUARTを割り込みでさばけるならそうしたほうがいいかもしれない。
んで肝心なくそコードがこんなかんじ