NXP MCUXpressoを使ってみる


NXP純正IDEであるMCUXpresso

MCUXpressoの触りだけでも知りたかったので、少々トライした記録である。

環境

秋月電子で購入可能なLPC11U35が搭載されたボードを利用。安価だったためこれを選択。Windows10上でMCUXpressoを使う。

MCUXpressoダウンロード

ここからダウンロードできる。NXPのアカウントが必要だった(はず)。

準備

SDKなどを使うのが通常のようだが、LPC11U35については、MCUXpressoで使えるのか不明であった。その代わりに、ここのResourcesにあったサンプルソースコードをインポートする方法をとった。

「Open Projects from File System」を選び、

「Archive」をクリックし、さきほどDownloadしたサンプルコードのzipファイルを選ぶ。サンプルコードとなる”s_demo”(メインプログラム)とLibrary2つを選択し「Finish」をクリック。インポート後は下記のようになる。

テスト環境

本ボードに接続されたボタンを押したら、ボード内のLEDが点灯することを実現する。

ボタンはGPIO0_22に接続されている(LEDはGPIO0_7に接続)。ピン配置については、秋月電子の本ボードのリンク先(説明書データーシート)も参照。

コード作成準備

さきほどのs_demoをコピーして作るのが簡単。下記メニューのCopy&Paste。

ここでは、Paste時に「btn_led」というプロジェクト名をつけた。


ライブラリとして、先ほどのインポート時のライブラリが含まれていることを確認。

コード

main.cを下記のように修正。

main.c
#ifdef __USE_CMSIS
#include "LPC11Uxx.h"
#endif

#include <cr_section_macros.h>
#include <NXP/crp.h>

#include "gpio.h"

// p0.7 is connected to LED3 on LPC11U35 QSB Board
#define LED_PORT 0  // Port for led
#define LED_BIT  7  // Bit on port for led
#define LED_ON   1  // Level to set port to turn on led
#define LED_OFF  0  // Level to set port to turn off led

// Variable to store CRP value in. Will be placed automatically
// by the linker when "Enable Code Read Protect" selected.
// See crp.h header for more information
__CRP const unsigned int CRP_WORD = CRP_NO_CRP ;

int main(void) {

  // Initialize GPIO
  GPIOInit();

  // Set LED pin as output
  GPIOSetDir(LED_PORT, LED_BIT, 1 );
  // Set 20 pin of port 0 as input
  GPIOSetDir(0, 20, 0);

  GPIOSetBitValue( LED_PORT, LED_BIT, LED_OFF );
  while (1) {
      if (!GPIOGetPinValue(0, 20)) {
          GPIOSetBitValue( LED_PORT, LED_BIT, LED_ON );
      } else {
          GPIOSetBitValue( LED_PORT, LED_BIT, LED_OFF );
      }
  }
}

GPIO制御関数は、サンプルコード及びライブラリ内にあったgpio.c/hを参照した。なお、変数「CRP_WORD」は必要のようだ(削除するとBuildできない)。

ビルド

「Build Project」をクリック。

バイナリ作成

本ボードをMass Storageとして認識させ、プログラムを転送するには、bin形式が必要。「Create binary」をクリック。

さらに、チェックサムを付加する必要があるらしい。コマンドプロンプトから付加する。

F:\Workspace\NXP\proj\btn_led\Debug>checksum -p lpc11u35 -d btn_led.bin
Written checksum 0xefffed0d at offset 0x1c in file btn_led.bin
Previous value 0xefffed0d at offset 0x1c in file btn_led.bin

ボードへコピー

ここの説明にあるとおり、ボードのSW1とSW2とを押し、SW1を押したままSW2を話すと、ボードがUSB Mass Storageとして認識される。

「firmware.bin」を削除し、さきほどの「btn_led.bin」をコピーする。

実験

コピー後、リセットする(SW2を押す、USBケーブルの挿し直し)と、プログラムが動作する。

成功。