ジャンル不定の日記です。

STM32F042K6T6でLチカ

STM32F042K6T6認識できたんで、とりあえずLED点滅させてみた。

前に失敗したときは公式からダウンロードしたCubeIDEでやろうとしたが、これはEclipse丸ごと入れる感じのアプリぽかったんで、
昨日Eclipse単体でインストールしてプラグインでCubeMXを入れてやろうとしたんだが、なんかやたら重くて使いにくかったんでCubeIDEにした。
が、なんか公式からダウンロードしようとしたら403エラーで落とせなかったんで、ゴミ箱から前に使ったやつを拾ってきてやってみた。

STM32のプロジェクトをSTM32F042K6T6で作成して、
.iocでPA8をGPIO_Outputにして、ピンが余るならPA13とPA14はSWDIOとSWDCLKにしといたほうがいいと思うんでそうした。(SWDIOとSWDCLKを使っちゃうとST-Link使えなくなっちゃうんだよね?)

で、[Project > Generate Code]を押すと[Core > main.c]が更新される。

  /* USER CODE BEGIN WHILE */
  while (1)
  {
    /* USER CODE END WHILE */
      HAL_GPIO_TogglePin(GPIOA,GPIO_PIN_8);
      HAL_Delay(100);
    /* USER CODE BEGIN 3 */
  }
  /* USER CODE END 3 */
USER CODEの無限ループ内をこんな感じに。
HAL_GPIO_TogglePinは出力ピンのHigh,Lowを切り替える。
HAL_Delayはミリ秒?
HALってのはAPIの様だが、どっかにリファレンスがあるのか?ちゃんと読まないとだな・・・

あと、マイコンにつなぐ回路の方は、LEDのVfが2VくらいぽくてST-Linkの3.3Vを使うことにした。
STM32の入出力ピンには25mAまで流せるみたいで、LEDと直列に抵抗を入れると3.3-2=1.3ということで抵抗両端の電圧は1.3V。
100Ωの抵抗を使えば13mAですね。
ってことにした。
LEDと100Ω抵抗を直列に3.3Vと18番ピンの間に。
出力ピンがHなら電源が相殺されて光らない。Lなら電流は流れるわけですね。

main.cの画面がアクティブな状態で[Run > Debug As > STM32...]をクリックするとデバッグが始まる。
と思ったが、「Could not determine GDB version」みたいなエラーが出た・・・
詳細を見ると、libncurses.so.5が見つからない?的な感じだった。
パッケージ検索でncursesを検索するとncurses 6.2-1が入ってた。
6が入ってるけど5じゃないとダメなのね。
というわけで探したが、AURにncurses5-compat-libsがあった。
これ前にAURからCubeIDE入れようとして入れれなかったやつかも・・・
というわけだが、AURのページに入れ方書いてあった。
$ gpg --recv-keys <KEYID - See 'validpgpkeys' array in PKGBUILD>
pacman標準のキーと違うのでインポートしないといけないらしい。
validpgpkeysはPKGBUILDに記載されてた。
が、すぐ下に記載されてたが、
$ makepkg --skippgpcheck
すればキーのインポート不要だったらしい。

ncurses5-compat-libs入れたらそのエラーはなくなったんだが、ST-Linkのファームウェアをアップしろと出た。
前に失敗したときもアップしたが、頻繁にアップデートくるもんなの?

そして、エラー無しでDebugできたんだが、 
HAL_Init();
の行で止まってLチカしない。
この行がブレークポイントになって止まる感じ?
Resume押したらLチカ始まった。

そんなわけで、Lチカはなんとかできた。
前にAURからCubeIDE入れようとしたときはncurses5-compat-libsが入れれなくて失敗したと思うんで、CubeIDEはAURから入れ直すかな・・・
そもそも、統合開発環境は使い方覚えるのが難しいからまっさらな状態から自分でコード書いてopenocdで扱えるようになりたいが・・・

次はSTM32F042K6T6のUSB機能を使いたいかな。