はじめに
以前Amazonで購入したBlue Pillでプログラミングをしてみようと思い、ST-LINKを使ってやりました。ファームウェアの経験はあまりないので、今回理解を深めるためにもやってみました。
Blue PillのLED1個を点滅させるというシンプルな目標です。
ST-LINKは、以前RSかどこかで購入したSTMicroelectronicsの評価ボードNUCLEO-F401REについているST-LINKの基板を切り離して使用しました。
動作環境
- STM32CubeIDE 1.7.0
- Blue Pill
- ST-LINK
- Windows10
STM32CubeIDEを起動
STM32CubeIDE 1.7.0をインストールし、最新版を起動。
Start new STM32 projectをクリック。
@lowlevelさんのTips of RobotDyn STM32F103 Dev.Boardにアップされている回路図によるとBlue PillのCPUはSTM32F103C8T6なので、STM32F103C8を選択してNextをクリック。@lowlevelさん、参考にさせて頂きました。ありがとうございました。
Project NameをBluPillTest01としてFinishをクリック。もちろん他の名前でもいいです。
先程の回路図によるとPC13がLEDに接続されているとのことなので、PC13の設定を変更します。
マウスをPC13の上に置き左クリック。Nextをクリック。GPIO_Outputを選択。これでPC13はGPIO出力ピンになるはずです。Ctrl-sでこの設定が反映されたソースコードが生成されます。
今のソフトウェア開発ツールは、本当に便利になったと思います。
上のようにBlue PillとST-LINKを接続しました。
ST-LINKは先程も言いましたように、下の評価ボードNUCLEO-F401REの、ST-LINKの部分を切り離して使用しています。
ST-LINKの詳細は、UM1724 User manualに記載されています。細かい設定で不明な場合、このマニュアルが参考になります。
この中にSWDのピンアサインが載っています。
下表のように結線します。
リセットの接続を忘れると多分正常に動かないです。
ST-LINK | Blue Pill | |
NRST | CN4-5 | 基板のRピン |
SWDIO | CN4-4 | J2-2 |
SWCLK | CN4-2 | J2-3 |
GND | CN4-3 | J2-4 |
ST-LINKはPCに、Blue PillはUSB電源に接続。
whileの中に250msごとにON/OFFさせるようなプログラムを記載して保存。その後マウスをプロジェクト名の上に置き、右クリックでBuild Projectを選択。ビルドが完了します。
その後上の虫のようなアイコンのところでDebug Configurationを選択。
デバッガタブを選択し、Debugをクリック。
ところがエラーとなってしまいました。
コンソールには
Error in initializing ST-LINK device.
Reason: ST-LINK: Could not verify ST device! Abort connection.
と表示されます。
そこでウェブサイトを検索したところ、どうもCPUが本物と違う(クローン)可能性があることがわかりました。
電子工作専科管理人さんのCS32 - 電子工作専科に、非常に詳しく載っていました。これを読ませて頂き解決しました。このサイトを読まなければ、多分挫折していたと思います。大変参考になりました。ありがとうございました。
cs32f1x.cfgというファイルを一部修正したりしなければならなのですが、基本的にその通りやれば動くと思います。cs32f1x.cfgの場所を探すのは結構大変でした。STMCubeIDEがインストールされているディレクトリをエクスプローラで開き、そこでこのファイルを検索するとわかります(私はそのようにして探しました)。これで探し出すだけで、結構時間がかかり、1回目はクラッシュして閉じてしまい、2回目に正常に検索が完了しました。
今回のパスは
STM32CubeIDE_1.7.0\STM32CubeIDE\plugins\com.st.stm32cube.ide.mcu.debug.openocd_2.0.0.202106290712\resources\openocd\st_scripts\target
でしたが、状況によって変わるかもしれません。
この話はCPUが本物であれば全く関係ない話だと思います。
教えに従い修正を行い、その後改めて虫のようなアイコンのところでDebug Configurationを選択。
デバッグプローブをST-LINK(OpenCDC)に変更し、Configuration ScriptをUser Definedに変更。そしてDebugをクリック。
Switchをクリック。
黄色と緑のアイコンをクリックしてスタート。
LEDが点滅しました。