目次
1. 初めに
2. プロジェクト作成
3. マイコン I/O設定、ペリフェラル設定
4. ソースコード 処理追加
5. PCシリアル設定
6. ビルド・実行
7. 終わりに
1. 初めに
テーマはUARTです。最初はシンプルなソフトを作成します。PC側で TeraTerm を使いますので、各自インストールしておいてください。
今回はExampleを用いず、空のプロジェクトを作成後 Hardware Configurator を使ってハードウェア設定を行い、ソースコードを手書きで追加する方法をやって行きます。
開発で必要なものはEFM8開発の初回記事の 2.必要なもの にありますので、参照していただけると良いかと思います。
2. プロジェクト作成
Simplicity Studio を起動し Launcher をクリックします。
マイコン基板をPCと接続していれば下記の表示があるはずです。もし表示が無ければ接続し直してください。
Connected Device
EFM8BB3 Busy Bee STK (ID: xxxxxxxxxxxx)
この右側 START をクリックします。

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

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

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

ただ、brd5202a_efm8bb31f64g-b-qfn32.hwconf のファイル名が長いので、短いファイル名へ変更します。(そのままで良ければ変更しなくても構いません)
brd5202a_efm8bb31f64g-b-qfn32.hwconf を右クリックし Rename をクリックします。

New name: へ任意のファイル名を入力します。ここでは UART_1.hwconf と入力します。その入力後 OK をクリックします。

3. マイコン I/O設定、ペリフェラル設定
I/O設定
今回設定するポートはこの通りです。
| PIN名 | 接続先 |
|---|---|
| P0.4 | UART1_TX |
| P0.5 | UART1_RX |
※P0.4、P0.5 はマイコン基板とPCとをUART接続する専用ポートです。詳細についてはマイコン基板のドキュメントを参照してください。
UART1_.hwconf を右クリックし、Open を選択します。

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

Property を設定します。P0.4は出力ポートとなります。
| Property | Value |
|---|---|
| IOMode | Digital Push-Pull Output |
このポートの Property 設定はデフォルトのままで良いです。P0.5は入力ポートとなります。

Property を設定します。
| Property | Value | 備考 |
|---|---|---|
| Enable Crossbar | Enabled | クロスバー 動作を許可する |
Port I/O Mapping の UART 1 Data のチェックを入れます。(UART 1 は下の方にあるので、下方向へスクロールして表示します)

使う予定の無いポートへ UART1_TX ・ UART1_RX が割り当てられています。そこで、割り当てて欲しくないポートの Property を設定します。
| Property | Value | 備考 |
|---|---|---|
| Skip | Skipped | クロスバー でのアサイン(割り当て)対象から除外する |
ペリフェラル設定
DefaultMode Peripherals をクリックしてペリフェラル設定画面を表示します。

クロック設定
Clock Control をクリックし、チェックを入れます。

Property を設定します。
| Property | Value | 備考 |
|---|---|---|
| Clock Source Divider | SYSCLK / 1 | クロックソースを1で分周する(分周しない) |
UART 1設定
UART 1 をクリックし、チェックを入れます。UART 1 の文字が黄色になっているのはプロパティに不正な値が存在しているのが理由です。

Property を設定します。
| Property | Value | 備考 |
|---|---|---|
| Enable Baud Rate Generator | Enabled | ボーレートジェネレータを有効にする |
| Baud Rate Prescaler | Divide by 1 | ボーレートプリスケーラ 1 |
| Expected Baud Rate | 115200 | ボーレート設定値 |
| Enable Receive | Enabled | 受信動作を許可する |
割り込み設定
Property を設定します。
| Property | Value | 備考 |
|---|---|---|
| Enable UART1 Interrupt | Enabled | UART1割り込みを許可する |
| Enable All Interrupt | Enabled | 各割り込みの許可に従って割り込み要求を受け付ける |
WDT(ウォッチドッグタイマー)設定
Watchdog Timer をクリックし、チェックを入れます。 
Property を設定します。
| Property | Value | 備考 |
|---|---|---|
| WDT Enable | Disable | ウォッチドッグタイマーを無効にする |
※ここでは無効設定としていますが、実際に製品に組み込むソフトではウォッチドッグタイマーを有効としましょう。EFM8マイコンに限らず、どんなマイコンでもウォッチドッグタイマーは重要なものです。
ソースコード生成
画面内を右クリックし、Generate Source を選択します。

InitDevice.c と Interrupt.c が生成されています。

4. ソースコード 処理追加
実際に動かすための処理を追加します。
SI_INTERRUPT (UART1_ISR, UART1_IRQn) //UART1割り込みハンドラ
{
if (SCON1_RI == 1) //受信割り込み要求あり
{
SCON1_RI = 0; //受信割り込み要求クリア
SBUF1 = SBUF1; //UART1:受信バッファから読み出し、そのまま送信バッファへ書き込む
}
}
関連するレジスタ・フラグの説明です。
| 名称 | 説明 |
|---|---|
| SCON1_RI | UART受信割り込み要求フラグ 1:割り込み要求あり ※自動でクリアされないので、割り込み処理内でソフトウェア的に0:クリアする必要がある |
| SBUF1 | UART1受信/受信バッファ ・読み出し(Read):受信バッファ ・書き込み(Write):送信バッファ |
SBUF1は同じ名称ながら実態が2つある、といったイメージでしょうか。
5. PCシリアル設定
デバイスマネージャーを開きます。
マイコン基板をPCへ接続すると、シリアルデバイスとして
JLink CDC UART Port (COMx)
の名称で表示します。ここでは COM3となります。

Tera Term を起動して、端末の設定とシリアルポートの設定を行います。

ポート はデバイスマネージャーで確認したもの(ここでは COM3)
スピード は UART 1設定 で設定した 115200 としてください。

6. ビルド・実行
過去記事 の
5. プロジェクトのビルド
6. 実行(デバッグ)
と同様です。
Tera Term を実行し文字を入力すると、入力した文字をそのまま表示します。エコーバックですね。

動かない場合は3. マイコン I/O設定、ペリフェラル設定 や4. ソースコード 処理追加を見直してみてください。
7. 終わりに
今回はかなりシンプルなソフトでした。今後少しずつ手を加えて機能を増やして行く予定です。























