2019-10-05 LPC > LPCXpresso54628 > Lチカ > SDK Exampleを使う例 > Quickstart Panel | プロジェクトの作成、ビルド、デバッグ、停止まで | USER LEDsのポートとピン

```txt:動作環境
OS: Ubuntu 18.04 LTS
基板: LPCXpresso54628
IDE: MCUXpresso IDE v11.0.1 [Build 2563] [2019-09-01]
```

## 概要

- 基板の初期動作としてLチカをする
- SDKにExampleがあるので、それを使う
    - 自前実装には様々なAPIの使用を理解することになるため、現段階ではこれでいいとする

## Quickstart Panel

プロジェクト作成、ビルド、デバッグの開始にはQuickstart Panelを使う。

Quickstart PanelはC/C++パースペクティブの場合、左下に表示される。
(パースペクティブの切替については、「[2019-10-05 LPC > LPCXpresso54628 > IDE > Project Explorerがある画面に移る > Open Perspective > C/C++ ](https://qiita.com/7of9/items/71908284b13fac224fe7)」を参照）。

![Screenshot from 2019-10-05 22-11-21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/32870/38f7be73-dbbf-e9f7-ef27-29b0266cd83d.png)

## 手順

### 手順概要

1. SDK exampleのインポート
2. ソースを一部修正
    - SWの検知をやめる
    - LEDのインターバルをゆっくりにする
3. ビルド
4. デバッグ実行
5. デバッグの停止

### 1. SDK exampleのインポート

- `1-1 Quickstart Panelの「Import SDK example(s)...」を選択する

- `1-2 Board and/or Device selection page画面にて、lpcxpresso54628を選択して「Next]を選択する

![Screenshot from 2019-10-05 22-21-13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/32870/5ad01865-972c-cdf4-b57f-ea52516f0864.png)


- `1-3 Import projects画面にて
    - Project name prefixを指定する
        - 例: 191005_2223_ledFlash (日付と日時をつけてみた）
    - driver_examples > gpio > gpio_led_outputを選択する
    - Nextを選択する

![Screenshot from 2019-10-05 22-24-18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/32870/3138804b-e0dd-3029-354e-b968ce7e4f95.png)


- `1-4 Advanced SettingsにてFinishを選択する

![Screenshot from 2019-10-05 22-25-05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/32870/8cb7df8e-5b9d-07a6-3c57-1373d9aa2d5d.png)



以上でサンプルコードが含まれるプロジェクトが作成され、gpio_led_output.cが開いた状態になる。


### 2. ソースを一部修正

インポートしたExampleのソース「gpio_led_output.c」には以下の二点の問題がある。

- A. SW押下処理も入ってるが、チャタリングのことを考慮してない
- B. SW押下検知処理のインターバルが短い (10msec程度?) 

以下のように変更する。

- A. SW押下処理はやめる
- B. インターバルを100倍に遅くする

Aに対する変更はwhile()ループを下記のようにする。

```c 
    while (1)
    {
        port_state = GPIO_PortRead(GPIO, APP_SW_PORT);
        //if (!(port_state & (1 << APP_SW_PIN)))
        //{
        //    PRINTF("\r\n Port state: %x\r\n", port_state);
            GPIO_PortToggle(GPIO, APP_BOARD_TEST_LED_PORT, 1u << APP_BOARD_TEST_LED_PIN);
        //}
        delay();
    }
```

Bに対する変更はdelay()の中身を以下のようにする(100倍のループ数にする)。

```c
    //for (i = 0; i < 100000; ++i)
    for (i = 0; i < 10000000; ++i)
    {
        __asm("NOP"); /* delay */
    }
```



### 3. ビルド

Quickstart PanelのBuildをクリックする。

### 4. デバッグ実行

Quickstart PanelのDebugをクリックする。
Probes discoverdと表示され、デバッグ用プローブの選択を要求される。
LPC-Link2 を使う設定をそのままにして、OKを選択する。

![Screenshot from 2019-10-05 22-39-39.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/32870/9c0eee8c-f92c-bf3c-d86b-d2e708b7e1f1.png)


Confirm Perspective Switchダイアログでパースペクティブのスイッチを聞かれる場合がある。その場合、Switchを選択してもいいし、しなくてもいい。
今回は選択する、とする。

![Screenshot from 2019-10-05 22-39-56.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/32870/b5897610-68be-3ef9-9dcd-b442a767939c.png)

デバッグ直後はプログラムが停止状態のため、Resume All Debug Sessionsをクリックして動かす。

![Screenshot191005_2243.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/32870/054105b9-74a2-a2c2-9e8e-8486f7b616b0.png)

User LEDsのLED3が１秒？程度のインターバルで点滅する。

ペンの先がLED3。
![IMG_1125.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/32870/56bde517-4bb9-7770-9af0-d12e3adce007.jpeg)


### 5. デバッグの停止

Terminate All Debug Sessionsを選択して、デバッグを停止する。
デバッグは停止するが、プログラムは動き続けるようだ。
（停止設定は将来調べることになるかもしれない）


![Screenshot191005_2255.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/32870/008e9975-548e-765c-232e-d762eaef65cf.png)


### 資料 > GPIOのポートとピン番号

UM11035
LPCXpresso546x8/540xx/54S0xx Board User Manual
Rev. 2.1 — 7th January 2019
https://www.nxp.com/docs/en/user-guide/UM11035.pdf

Exampleにて使用されるポートとピン番号の説明がある。

p10
> P2-2(D9), P3-3(D11) and P3-14(D12)

p10
> SW2, SW3, SW4 : ISP / User buttons
> IPS2 (P0-6), ISP1(P0-5), ISP0(P0-4)

p6
User LEDsの場所が基板右側として掲載されている。