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 SupportOpenOCD Homeにインストール先(openocdコマンドがあるディレクトリ)を選択する。

Clionのデバッグ構成

board/st_nucleo_h743zi.cfgを指定。後は▶で書き込むだけ。

やり残したこと

C++でやりたい。自動生成されるmain.cmain.cppに変更するだけでGPIOやTIMは動きはするが、printfが動かない。(LL_USART_TransmitData8を使って1文字ずつの送信はできるのに。printfはできない。タスケテ)