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

STM32が使えない・・・

Orange Pi R1関連も一旦落ち着いた感じなんで、届いたまま放置してたSTM32を使ってみようと思った。

はんだ付けは苦労したがなんとかできたと思う。
DIP変換基板はヘッダーピンを装着してブレッドボードにさせる感じが良かったと思うんだが、
手持ちのヘッダーピンが太いようで入らなかったんでソケットを装着した。

開発ツールはSTM32CubeIDEというSTM公式のツールが情報多い感じなんで(というか、他の情報が全然ない)それ入れようとした。
AURにあったんだが依存パッケージがmakepkgできず諦めて、公式からインストーラーを持ってきて入れた。

中華ST-Linkには端子が10本で、
RST、GND、SWIM、3.3V、5.0V、SWDIO、GND、SWCLK、3.3V、5.0V
となってる。
このうちSWDIOとSWCLKをつないで、3.3VとGNDで電源供給すればいいぽい。
STM32F042K6T6は1番ピンがVDD、32番ピンがVSSとなっているが、VDDが3.3VでVSSがGNDのことみたい。
24番ピン(PA14)がSWCLKで、23番ピン(PA13)がSWDIOとのこと。
最初、角にあるPA14でLEDを点滅させようかと思ったが、SWCLKは空けておいたほうが良さげだから9番ピン(PA3)に変更した。

CubeIDEでプロジェクトを作成して、ICの画面で24番ピンをクリックしてSWCLKにしたら23番ピンもSWDIOに変わった。
9番ピンをクリックしてGPIO outputにして、
上部メニューの "Project > Generate code"したら左サイドバーの "Core > Src > main.c"の"MX_GPIO_Init"にGPIOの設定が出てきた。
mainのwhile(1){}ブロック内にコードを書けばいいみたいだが、
  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
    HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_3);
    HAL_Delay(1000);
  }
  /* USER CODE END 3 */
}
とした。

で、"Run > Debung As"からビルドしてデバッグができるみたいなんだができなかった。
調べてもわからず、
統合開発環境は機能が多すぎて難しいから、CUIで使えそうなstlinkとopenocdを入れて試してみたんだが、
$ sudo st-info --probe
Found 1 stlink programmers
 serial: 413a010032124353354b4e00
openocd: "\x41\x3a\x01\x00\x32\x12\x43\x53\x35\x4b\x4e\x00"
  flash: 0 (pagesize: 0)
   sram: 0
 chipid: 0x0000
  descr: unknown device
こんな感じで、なんかST-Linkは認識しているがSTM32を認識していないような?

これまたわからないんで、最終手段としてWindowsにCubeIDEを入れて試してみたが、
Linuxのときと表示内容は違うが同じところでエラー。
やはりST-Linkにデバイスがつながっていないようなエラーが出た。

はんだ付けも怪しいし、一度も成功してないから配線も疑わしい。
開発環境の使い方もあってるかわからん。
ググると中華ST-LinkはNRSTが無いのが問題になる場合もあるとか。(中華ST-LinkにRSTの端子あるけどこれは使えないわけ?)
というわけで、どこが問題なのかわからん。
開発ボード使った情報ばっかでチップ直の情報もなさすぎ・・・

まず自分ではんだ付けしないでボードで始めるのが良かったかも。
というか、そうしようと思ったが買い忘れた。

わからなすぎるんで、一旦諦めてなんかボード買う。
が、コロナで今やばいか・・・