目次
1. 初めに
2. プロジェクト作成
3. マイコン I/O設定、ペリフェラル設定
4. ソースコード 定義・処理追加
5. ビルド・実行
6. 終わりに
1. 初めに
前回から引き続き作業を進めて行きます。今回はHardware Configuratorを使ってみます。このツールを使って簡単なソフトを動かすことが目標です。
Hardware Configuratorとは、ピンI/O設定やペリフェラル設定などのマイコン機能設定をGUIで行うことができるツールで、Simplicity Studioに実装されています。
2. プロジェクト作成
Hardware Configuratorを使うためのプロジェクトを作成します。
ここで作業中のプロジェクトをクローズしておきます。Project Explorer の EFM8BB3_Blinky ~(省略)~ を右クリックし、Close Project を選択します。

プロジェクトクローズ後の画面です。Launcherをクリックします。

マイコン基板をPCと接続していれば下記の表示があるはずです。もし表示が無ければ接続し直してください。
Connected Device
EFM8BB3 Busy Bee STK (ID: xxxxxxxxxxxx)
この右側 START をクリックします。

Hardware Configurator の LAUNCH をクリックします。

新プロジェクトのセットアップ画面を表示します。 Boards:、 Part: 、 SDK: いずれも設定済みになっているので、ここでは特に何も入力せず Next をクリックします。

新プロジェクトの構成設定画面を表示します。今回は設定済みのものをそのまま用いることとしますので Finish をクリックします。プロジェクト名を変更するのなら Project name: へ新しい名称を、プロジェクトを保存するフォルダを変更するなら Use default location のチェックを外し、 Location: を入力してください。

3. マイコン I/O設定、ペリフェラル設定
マイコンのI/O設定、ペリフェラル設定を行います。
brd5202a_efm8bb31f64g-b-qfn32.hwconf を右クリックし、 Open を選択します。

DefaultMode Port I/O をクリックしてポート設定画面を表示します。

今回設定するポートはこの通りです。
| PIN名 | 接続先 |
|---|---|
| P0.2 | BTN0 |
| P1.4 | LED0 (緑) |
Property を設定します
| Property | Value |
|---|---|
| Skip | Skipped |
Property を設定します。
| Property | Value |
|---|---|
| IOMode | Digital Push-Pull Output |
| Skip | Skipped |
Outlineの Port I/O をクリックし、Propertyを設定します。
| Property | Value |
|---|---|
| Enable Crossbar | Enabled |
下の画面内を右クリックし、 Generate Source を選択します。

ソースコード生成が終了しました。が、この画面だけでは何も変わってないように見えます。そこで InitDevice.c を見てみます。

//---- 以上省略
extern void
enter_DefaultMode_from_RESET (void)
{
// $[Config Calls]
// Save the SFRPAGE
uint8_t SFRPAGE_save = SFRPAGE;
PORTS_0_enter_DefaultMode_from_RESET ();
PORTS_1_enter_DefaultMode_from_RESET ();
PBCFG_0_enter_DefaultMode_from_RESET ();
// Restore the SFRPAGE
SFRPAGE = SFRPAGE_save;
// [Config Calls]$
}
//---- 以下省略
実は、Generate Sourceを実行する前(ポートの設定をする前)は以下の様になっていました。この範囲だけでも3行の差分が確認できます。
//---- 以上省略
extern void
enter_DefaultMode_from_RESET (void)
{
// $[Config Calls]
// Save the SFRPAGE
uint8_t SFRPAGE_save = SFRPAGE;
// Restore the SFRPAGE
SFRPAGE = SFRPAGE_save;
// [Config Calls]$
}
Generate Sourceを実行することでソースコードへ設定内容が追加されるようになっていることがわかります。
4. ソースコード 定義・処理追加
ポートを使用するための定義と、実際に動かすための処理を追加します。
EFM8BB31F64G-B-QFN32_main.c を開いて、下記リストの通りに追加します。
//=========================================================
// src/EFM8BB31F64G-B-QFN32_main.c: generated by Hardware Configurator
//
// This file will be updated when saving a document.
// leave the sections inside the "$[...]" comment tags alone
// or they will be overwritten!!
//=========================================================
//-----------------------------------------------------------------------------
// Includes
//-----------------------------------------------------------------------------
#include <SI_EFM8BB3_Register_Enums.h> // SFR declarations
#include "InitDevice.h"
// $[Generated Includes]
// [Generated Includes]$
+ SI_SBIT(BTN0, SFR_P0, 2);
+ SI_SBIT(LED0_G, SFR_P1, 4);
//-----------------------------------------------------------------------------
// SiLabs_Startup() Routine
// ----------------------------------------------------------------------------
// This function is called immediately after reset, before the initialization
// code is run in SILABS_STARTUP.A51 (which runs before main() ). This is a
// useful place to disable the watchdog timer, which is enable by default
// and may trigger before main() in some instances.
//-----------------------------------------------------------------------------
void
SiLabs_Startup (void)
{
// $[SiLabs Startup]
// [SiLabs Startup]$
}
//-----------------------------------------------------------------------------
// main() Routine
// ----------------------------------------------------------------------------
int
main (void)
{
// Call hardware initialization routine
enter_DefaultMode_from_RESET ();
while (1)
{
// $[Generated Run-time code]
// [Generated Run-time code]$
+ LED0_G = BTN0;
}
}
5. ビルド・実行
前回記事 の
5. プロジェクトのビルド
6. 実行(デバッグ)
と同様です。
実行の様子です。
BTN0を押すとLED0は緑色に点灯します。

6. 終わりに
今回もうまく動きました。これで色々なソフトを開発できそうな感じになりました。前回、今回とあまり細かい説明などは省略していますが、今後開発を進めながら説明して行くことになるかと考えています。










