NXP MCUXpressoでHello World

[NXP MCUXpressoのインストール手順](http://qiita.com/yuucha/items/9b470ed7d5ded4645163)で構築した開発環境をつかって、Hello Worldに挑戦します。

# 最初に、NXP MCUXpresso IDEへSDKが読み込まれているか確認
起動後の画面の右下にあるinstallのタブに、SDKが読み込まれているか確認してください。
SDKが表示されない場合は、ダウンロード後に解凍したSDKフォルダを
__~/mcuxpresso/SDKPackages__
の下に解凍済みSDKフォルダ移動します。MCUXpresso IDEを再起動して読み込まれればOKです。
SDKの入手方法は、こちらの投稿を参照してください。
[NXP MCUXpressoのインストール手順](http://qiita.com/yuucha/items/9b470ed7d5ded4645163)
<img width="1017" alt="p-22.png" src="https://qiita-image-store.s3.amazonaws.com/0/194223/41647877-ff17-0fb8-effa-fc677eca2f38.png">


# Hello Worldのプロジェクトテンプレートを入手
MCUXpressoでは、開発ターゲットに合わせてテンプレートを提供しています。
このテンプレートは、Hello World以外にも、I2C用等も用意され初期段階でかかるコーディングの手間を軽減してくれます。テンプレート入手には2つの方法がありますが、方法その1で紹介しています__IDEでインポート__をお勧めします。

__方法その1　MCUXpresso IDEでインポート__
MCUXpresso IDE内でインターネット経由でテンプレートのインストールができます。
<img width="466" alt="p-30.png" src="https://qiita-image-store.s3.amazonaws.com/0/194223/867be82d-228a-4be1-e1ba-cb089d906ef0.png">
画面には、開発ターゲットの設定が求められますのでご自身の開発環境に合わせて選択をしてください。ターゲットの選択リストはインストールされたSDKに依存していますので、もし必要なターゲットが見つからない場合はSDK Builderを使ってSDKをダウンロードして、環境下のフォルダに配置してください。
<img width="1158" alt="p-31.png" src="https://qiita-image-store.s3.amazonaws.com/0/194223/a79d09af-f449-c5a5-6c02-4727ff1f8507.png">

次の画面で利用できるExamplesのリストが表示されますので、hello worldプロジェクトを探してチェックボックスを選択し、Finishボタンを押してください。
<img width="1153" alt="p-32.png" src="https://qiita-image-store.s3.amazonaws.com/0/194223/de28cf5b-020d-0ee7-11a1-5b44d71127c1.png">
あとは、hello_worldプロジェクトがダウンロードされてIDEに自動でインポートされます。


__方法その2　MCUXpresso Config Toolsサイトからダウンロード__
MCUXpresso IDEからインストールできない場合は、MCUXpresso Config Toolsサイトにアクセスしてダウンロードしてください。

1. NXP MCUXpressoサイトにアクセス
2. Config Settingを選択
3. JumpStart your Configrationを選択
4. Example Projectsの画面から、demo_app/hello_worldを選択してダウンロード
<img width="1195" alt="p-21.png" src="https://qiita-image-store.s3.amazonaws.com/0/194223/4ec82569-9b2e-91e4-23b9-c532722012a2.png">
5. ダウンロードしたzipを解凍してworkspaceフォルダに移動
hello_world.zipを解凍してできるhello_worldフォルダをMCUXpressoで指定したworkspaceフォルダの下に移動します。OSXの場合は、ユーザフォルダ下の書類の中にあるMCUXpressoIDE_x（xはバージョン）にworkspaceフォルダがあります。

6. hello word プロジェクトをインポート__
FileメニューからImportを選択してインポート画面を表示します。
Projects from Folder or Archiveを選択しNextを押します。
<img width="615" alt="p-23.png" src="https://qiita-image-store.s3.amazonaws.com/0/194223/971325db-2419-3bda-abe3-7145fa91c7e1.png">
フォルダ選択画面から　hellow_worldフォルダを選択してFinishを押します。

7. projectの確認__
画面左のprojectタブにhellow_worldプロジェクトが表示されれば読み込みが完了しています。
<img width="537" alt="p-25.png" src="https://qiita-image-store.s3.amazonaws.com/0/194223/622304c4-9e94-99af-4593-e1831561777b.png">

# Hello Worldをうごかしてみる。
__1. Hello Worldの挙動を確認__
とりあえずHello Worldがなにをするのかを確認してみましょう。フロジェクトのhello_worldの中にあるdocフォルダを開いてreadme.txtを開きます。内容を見るとデバグ用コンソールに、hello worldというテキストをプリントするようにプログラムされているようです。また、その後に続く無限ループ内で1文字入力を受け取り、その1文字を出力するようになっています。

```
int main(void)
{
    char ch;

    /* Init board hardware. */
    BOARD_InitPins();
    BOARD_BootClockRUN();
    BOARD_InitDebugConsole();

    PRINTF("Yes!\r\n");

    while (1)
    {
        ch = GETCHAR();
        PUTCHAR(ch);
    }
}
```
動作の確認のためには、ターゲットとパソコンを接続してパソコン側でターミナルを起動して、モニタする必要があるようです。

__2.開発ボードのセッッティング__
今回は、開発ターゲットとして__FRDM-KL03Z__を用意しました。この開発ボードはKL03ファミリーのMCUを使っていて、ARM ContrexM0+となります。接続はUSB mini ケーブルをつかってパソコンと接続します。
![p-27.jpg](https://qiita-image-store.s3.amazonaws.com/0/194223/34009dff-a80c-00c2-c022-9787743af7e9.jpeg)

認識するドライバはMCUXpressoIDEアプリをインストールする際にまとめてインストールされています。認識されているかは、IDEの左下にある__Quick Start__と呼ばれる場所にある__Debug 'hello world'[Debug]__を選択するとDebugビルドの後に接続済みターゲットの一覧が表示されます。
<img width="608" alt="p-26.png" src="https://qiita-image-store.s3.amazonaws.com/0/194223/d779b5b6-d756-5505-247b-dcb9227db145.png">
こちらに接続したターゲットがない場合は、パソコンに認識されていませんのでドライバーのインストールなどを確認します。

__3. デバグで実行__
__Quick Start__の__Debug 'hello world'[Debug]__をつかって実行してみます。s 選択すると、__2.__で表示された利用可能なターゲット一覧からターゲットを選択してOKボタンを押します。パッケージ化処理の後にターゲットへのダウンドードが実行されて、IDEがデバグ実行状態で一時停止します。
<img width="1269" alt="p-28.png" src="https://qiita-image-store.s3.amazonaws.com/0/194223/622369eb-b11d-800f-eaf4-3f263fd500e7.png">
停止箇所は、hello_world.cのmain()のBORAD_initPins()の手前となります。IDEのデバグでは、通常この場所で一時停止するように設定されていますので、処理を継続する場合は、ウィンドウメニューにあるResumeボタンを押して処理を継続実行します。
継続実行すると、画面下で開発ボードとの通信内容を表示するConsoleタブが表示され、__hello world__と表示されれば、成功です。
<img width="777" alt="p-29.png" src="https://qiita-image-store.s3.amazonaws.com/0/194223/4b0dfc80-9b84-0878-93dd-f462b5f1835f.png">

__4. hello world をカスタマイズ__
それでは、hello_world.cを修正して、実行してみます。デバグ実行しているなら停止ボタンを押してデバグを終了させます。
次にsourceフォルダ内のhello_world.cを開いて

```
PRINTF("hello world.\r\n");
```
の部分を
```
PRINTF("Yes!\r\n");
```
と修正して保存します。
先ほどと同様に、__Quick Start__の__Debug 'hello world'[Debug]__をつかって実行してください。Consoleタブに__Yes!__と表示されれば成功です。
main()内の無限ループでキーボードからのテキストをオウム返しする処理がありますので、コンソールが上にスクロールしてしまい、Printされた文字がなくなってしまいます。Consoleを上にスクロールするとPrint文があるので、見当たらない場合はスクロールしてみてください。

以上です。