STM32+Clionで開発(在宅勤務の話も)
在宅引きこもりでマウスの意欲をロストして、3ヶ月間一切何もしなかった。 ここまで何もしない期間ができたのは、マウスを初めて以来初である。
今日は久々にモチベがあったので、ブログまで書ききった
技術的なネタの前に、在宅7ヶ月目が終わりに近づいて、在宅勤務も感想をちょっとだけ。
- 通勤は害悪。1日2h近く移動に使っても、1円も認められないのは損でしかない。2時間睡眠を増やせばパフォーマンスは上がる。(平均5h未満が8hになることのバフ効果はヤバイ)
- 在宅でコミュニケーションの問題が起きているのは言い訳。直接会えてても問題があったか、欠如していたかのどちらか。(私見)
- 通勤定期バグ(在宅で電車乗ってないのに、定期代が支払われるバグ)の修正が遅い。
- 仕事中の何気ない雑談は少なくなったが、ネット会議の枠を使ってやれば十分足りる。
- 場所に縛られない働き方によって、オフィスの価値が変わり、住む場所の選び方も変わった。仕事の選び方も変わるのだろうか?
さて、本題だ。 naophis.hatenablog.com
この記事の続きのつもり。
構成
- Ubuntu 20.03
- clion 2020.2
- stm32h743(nucleo743zi)
- openocd(自力ビルド!!!!)
CubeMXの設定
Project Manager
- Project・・・toolchainで
STM32CubeIDE
を選択 - Code Generator・・・
Generate peripheral initialization as a pair of '.c/.h' files per peripheral
にチェックを入れることを推奨。
HAL or LL?
LLを選択。HALは遅い。
HALを使うと格闘ゲームプレイヤーなら違和感が出るレベルで遅い。
ただし、基本動作の確認にHALを使うことは、ネットにサンプルコードがたくさんあることから推奨。テストコードはOK、本番コードはNGな印象。
printf
main.c
に以下の関数を挿入しておく。
// LLでUSART3を使用。 void USART_TransmitByte(uint8_t ch){ LL_USART_TransmitData8(USART3,ch); while(LL_USART_IsActiveFlag_TXE(USART3)==0); } void __io_putchar(uint8_t ch){ USART_TransmitByte(ch); }
OpenOCD
sudo apt install openocd
で入るopenocdではnucleo-h7系がない。
githubの最新のcfgファイルを抜き出して入れても、参照先の解決ができない。
面倒くさいから自力でビルドする!!
以下を参考に前提になるパッケージを入れて、ビルドするだけ!!(他力本願)
hackaday.io
Clionで使えるようにする
clionの設定でOpenOCD Support
でOpenOCD Home
にインストール先(openocdコマンドがあるディレクトリ)を選択する。
Clionのデバッグ構成
board/st_nucleo_h743zi.cfg
を指定。後は▶で書き込むだけ。
やり残したこと
C++でやりたい。自動生成されるmain.c
をmain.cpp
に変更するだけでGPIOやTIMは動きはするが、printfが動かない。(LL_USART_TransmitData8を使って1文字ずつの送信はできるのに。printfはできない。タスケテ)