010 atollic開発ツールをまずは起動してSTM32-DISCOVERYをつないでみる
TrueSTUDIOをインストールはできました.
けど、ここからが長いんだよね.
ツールの使い方がわからない.
ライブラリのフォルダ構造がわからない.
ライブラリで何ができるのかがわからない.
これらを紐解くには長い時間がかかります.
これが近年のエレクトロニクスホビーの参入障壁の高さとという問題だと思います.
なにか判らないままにTrueSTUDIOをいじってみて、STM32-DISCOVERYを動かせたので、そこまでを以下に書きます.
●スタート→すべてのプログラム→Atollic→TrueSTUDIOを起動します.
●workspaceのフォルダを聞いてきます.
お好みのフォルダを指定してください.
今後もこのフォルダを使うことにしてチェックをしてOKをクリック.
ここで注意です.
あとからこのデフォルトフォルダを変更したくても、その方法が見つかりません(今のところ).
ここは慎重にフォルダを選びましょう.わたしは迂闊な場所を指定してしまって後悔しています.
ハッキング的にはこの.iniファイルにそれっぽいフォルダが書かれているのですが、そこをいじくっても状況が変わりませんでした.
C:\Program Files (x86)\Atollic\TrueSTUDIO for STMicroelectronics STM32 Lite 2.2.0\ide\TrueSTUDIO.ini
●TrueSTUDIOが起動しますが、Pro versionにUPGRADEしましょうという広告が出ます.
Close windowをクリックして広告を消します.
この広告は、今後使い続けると執拗に出ますので、うざったいです.
●TrueSTUDIOの起動画面が現れます.またしてもこのさわやかな海が現れます.
右下のStart using TrueSTUDIOをクリックします.
●起動するとこのような開発環境画面が現れます.まだ何もprojectなどはありません.
●最初にprojectを作ります.
projectを作る時点で、STM32-DISCOVERYを指定します.
ライブラリも組み込まれた状態でprojectのひな形が作られます.
以下を読んでいただくと、これは便利だ思われることでしょう.
では開始です.
下図のように、File→New→C Projectとメニュー選択します.
●どんなC Projectを作るかを設定する画面が現れます.
●赤で囲ったところを設定して、Nextをクリックします.
Project nameは start1としました.お好みの名前でOKです.
Locationは お好みのフォルダを指定すればよいでしょう.
上で後悔したと書いたように、わたしの場合はuse default locationだとお好みのフォルダを指定しないので、チェックを外して、Browseボタンでいちいちフォルダを設定しています.
わたしは C:\Users\hira\Documents\Atollic\TrueSTUDIO\start1 をワークフォルダにしました.
start1フォルダは自分で明示的に作ってください.自動では作られませんので.
Embedded C Projectの指定は必須です.忘れないようにしてください.
Nextをクリックして次へ進みます.
●次に出る画面で、STM32-DISCOVERYを指定します.
STM32VL-DISCOVERYが正式名称なのでそれにします.
Nextをクリックします.
●デバッグツールを指定します.
ST-LINKに設定します.
Finishをクリックして次へ進みます.
●ここはなにも変えずにFinishをクリック.
●10秒ぐらい待つと、開発システム画面が現れます.
Project Explolerペインに関連ファイルが表示されます.
srcの中にmain.cがありまして、わたしがcodingしなくちゃいけないのはこれです.
Librariesの中には、CMSISとSTM32F10x_StdPetirh_Driverがありまして、これがSTMicro社提供のライブラリです.
projectを新規作成した時点ですでにライブラリが組み込まれているのです.こりゃ便利でいいわ.
●ライブラリがprojectに自動的に追加されたのはわかりましたが、STM32-DISCOVERYに搭載されているSTM32F100RBがどこで指定されているのでしょうか?
それを説明します.
main.cをダブルクリックして開いてください.
冒頭に次のインクルードがあります.
/* Includes */
#include <stddef.h>
#include "stm32f10x.h"
stm32f10x.hがCPUを設定するヘッダファイルです.
次にstm32f10x.hを開いて中を見てみましょう.
Project Explolerペインのmain.cをダブルクリック → ウィンドウの右側にあるOutlineペインにstm32f10x.hが表示されます → そのstm32f10x.hをダブルクリック
stm32f10x.hの中身が表示されます.
66行目以降にあるこれらのコメントのどれかを解除すればOKだという仕組みになっています.
ここの下に書かれているコメントを読むと、STM32F100RBは STM32F10X_MD_VL です.
しかし変ですね.コメントアウトされたままですから.
いったいどうなっているんでしょう?
/* #define STM32F10X_LD */ /*!< STM32F10X_LD: STM32 Low density devices */
/* #define STM32F10X_LD_VL */ /*!< STM32F10X_LD_VL: STM32 Low density Value Line devices */
/* #define STM32F10X_MD */ /*!< STM32F10X_MD: STM32 Medium density devices */
/* #define STM32F10X_MD_VL */ /*!< STM32F10X_MD_VL: STM32 Medium density Value Line devices */
/* #define STM32F10X_HD */ /*!< STM32F10X_HD: STM32 High density devices */
/* #define STM32F10X_HD_VL */ /*!< STM32F10X_HD_VL: STM32 High density value line devices */
/* #define STM32F10X_XL */ /*!< STM32F10X_XL: STM32 XL-density devices */
/* #define STM32F10X_CL */ /*!< STM32F10X_CL: STM32 Connectivity line devices */
STM32F100RBを指定しているファイルをサーチすると次のファイルに当たります.
C:\Users\hira\Documents\Atollic\TrueSTUDIO\start1\.cproject
これを開くと、このような文字が入っています.
ここで、指定していると思われます.
インクルードファイルで指定してないでもOKな理由です.
<listOptionValue builtIn="false" value="USE_STM32_DISCOVERY"/>
<listOptionValue builtIn="false" value="STM32F10X_MD_VL"/>
<listOptionValue builtIn="false" value="USE_STDPERIPH_DRIVER"/>
●ファイルの探索はこれぐらいにして、いきなりBuildしてみます.
メニューのProject → Build Allにします.
下部にあるConsoleペインを見ると、すでにBuild済みなのでなにもしないと表示されています.
つまりません.
**** Build of configuration Debug for project start1 ****
**** Internal Builder is used for build ****
Nothing to build for start1
●一旦clearしてからbuildしてみます.
メニューのProject→Cleanにします.
ダイアログが出ますのでOKをクリック.
●再びBuildしてみましょう.
メニューのProject → Build Allにします.
こんどはガラガラと動いてbuildされます.
●なにかがBuildされたので動かしてみたいのでDebuggerを起動してみましょう.
STM32-DISCOVERYをUSBケーブルでPCに接続します.
●次に、.elfファイルをクリックして選択します.
●次に、メニューの虫マークをクリックします.
●デバッガの起動画面がでます.
なにも変更せずにOKをクリックして先に進みます.
●デバッガの画面が表示されますが、まだSTM32-DISCOVERYは動いてません.
動かすには、数の再生ボタンを押します.
●すると、STM32-DISCOVERYの様子が変わります.
グリーンのLEDが光りました.
●青いボタンを押すと、青いLEDの点灯に変わります.
どうやら、STM32-DISCOVERYを動かすことに成功したようです.
●projectを作ったdefaultの状態で、main.cにそういうcodeが書かれているのでしょうか?
まず、coding画面に戻るために、メニューのWindow→Open Perspective→C/C++をクリックします.
●main.cを開きます.
●するとmain.cにボタンでLEDをon/offするcodeが書かれていました.
#elif defined USE_STM32_DISCOVERY
if(0 == STM32vldiscovery_PBGetState(BUTTON_USER))
{
/* Toggle LED3 */
STM32vldiscovery_LEDToggle(LED3);
/* Turn Off LED4 */
STM32vldiscovery_LEDOff(LED4);
}
else
{
/* Toggle LED4 */
STM32vldiscovery_LEDToggle(LED4);
/* Turn Off LED3 */
STM32vldiscovery_LEDOff(LED3);
}
#endif
●TrueSTUDIOをcloseして、USBを抜き差ししても、ボタンでLEDが制御される動作はしますので、FLASHが焼かれていることがわかります.
以上をもって、TrueSTUDIOをつかってbuildしてデバッガでFLASHを焼いて動作確認ができました.
STVPでFLASHを焼くには、.hexファイルに変換しないといけませんが、そのやりかたはまだわかっていません.