LEDチカチカ(LPC810)
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
開始行:
#analog
#norelated
#contents
* LEDチカチカ(LPC810) [#ve36a221]
** 構成 [#rb39527d]
トランジスタ技術2014年2月号付属のLPC810とプリント基板のセ...
なので、これを点滅させてみましょう。~
LPC810のピンアサインは、[[LPC800シリーズ:http://www.nxp-l...
LEDは5ピンのPIO0_1につくようになっています。~
** プロジェクト [#kcb22790]
まずは、新規プロジェクトを作りましょう。~
QuickStartPanelのNew projectから、LPC8xxの「C Project」を...
MCUはLPC810を選び、CMSIS Core libraryは、CMSIS_CORE_LPC8x...
Peripheral Driver Libraryは、lpc800_driver_libを選択しま...
DSPLIBは使わないので、Noneのままです。~
MTBの設定はチェックを外して無効にしておきます。~
これはデバッグに使用する機能ですが、トレースデータを保存...
Code Read Protectについては、コードを読み出されないように...
プロジェクトが作成されたら、右クリックからプロパティを開...
「Project References」は、CMSIS_CORE_LPC8xxと、lpc800_dri...
これで、変数や関数の定義を、プロジェクトをまたいで遡るこ...
ここまでで、プロジェクトの設定は終わりですので、反映させ...
QuickStartPanelからBuildを実行して、axfファイルが出来上が...
** ソースコード [#nf8e0b77]
以下、ソースコード。~
まず、最初から作られているmain.cをベースに、以下のinclude...
// TODO: insert other include files here
#include "lpc8xx_gpio.h"
次に、指定時間waitするためのカウンタをグローバル変数とし...
これは、昔やったやつと同じですね。~
// TODO: insert other definitions and declarations here
volatile uint32_t msTicks = 0;
void SysTick_Handler(void) {
msTicks++;
}
void systick_delay (uint32_t delayTicks) {
uint32_t currentTicks = msTicks;
while ((msTicks - currentTicks) < delayTicks);
}
そして、メイン関数は以下のようになります。~
int main(void) {
// TODO: insert code here
SystemCoreClockUpdate();
GPIOInit();
GPIOSetDir(0, 1, 1);
GPIOSetBitValue(0, 1, 1);
SysTick_Config(SystemCoreClock / 1000);
while(1) {
systick_delay(500);
GPIOSetBitValue(0, 1, 0);
systick_delay(500);
GPIOSetBitValue(0, 1, 1);
}
return 0;
}
** ソースコード解説 [#debd3503]
最初にSystemCoreClockUpdateという関数を呼んでいますが、こ...
ただ、起動時にはSystemInitでクロックの設定がされるため、...
今回のペリフェラルドライバライブラリには、前のようなPINSE...
まぁ、基本的にはデフォルト値で問題ないことしかしていない...
GPIOInitでGPIOの初期化をし、GPIOSetDirでLEDが接続されてい...
そして、GPIOSetBitValueで点灯させます。~
GPIOSetDirやGPIOSetBitValueは、実際には最初の引数の0(ポー...
PIO0しかないので、指定する必要がないけど、互換性のために...
とはいえ、以前使用したLPC176X用のライブラリとは、微妙にI/...
次に、SysTick_Configで、1msの割り込みを発生させます。~
これも以前に説明しているので、詳細は割愛します。~
無限ループの中身は、500msのwaitを行うサブ関数を呼んで、1...
簡単ですね。~
** 実行・デバッグ [#mb402324]
ソースが出来て、ビルドが通ったら、いよいよ実行です。~
以前はLPC1769と一体になっているLPC-Linkを使用しましたが、...
LPC-Link2とPCをUSBで繋いで、さらにLPC-Link2と基板を繋ぎま...
ちなみに、LPC-Link2のジャンパは、RedLinkとしてLPCXpresso...
繋がったら、QuickStartPanelのDebugを押します。~
無事に実行できると、自動的にmain関数の先頭でbreakがかかり...
Step Over(F6)でステップ実行を行い、最初のGPIOSetBitValue...
Resume(F8)を押せば、LEDが点滅します。~
Suspendで、その時実行している箇所で停止します。~
Terminate(Ctrl+F2)でデバッガは停止し、マイコン自体はその...
この辺りも前と同じですね。~
#u2b(cTsCXDH9lP4,w=640,h=360)
** クロックの設定 [#ibdc6a5e]
デバッガで停止中に、SysTick_Configの引数に指定している、S...
ポップアップが表示されて、12000000という数字が値として設...
LPC810は30MHzでの動作が可能ですが、デフォルトでは12MHzで...
LPC1769の時と同様、30MHzで動作させるためには、CMSISライブ...
こちらの詳細につきましては、以下のblogがとてもわかりやす...
参考にさせていただきました。
[[人と技術のマッシュアップ-LPCXpressoとLPC800-MAXでマイコ...
以上で、LPC810版のLEDチカチカは終了です。~
終了行:
#analog
#norelated
#contents
* LEDチカチカ(LPC810) [#ve36a221]
** 構成 [#rb39527d]
トランジスタ技術2014年2月号付属のLPC810とプリント基板のセ...
なので、これを点滅させてみましょう。~
LPC810のピンアサインは、[[LPC800シリーズ:http://www.nxp-l...
LEDは5ピンのPIO0_1につくようになっています。~
** プロジェクト [#kcb22790]
まずは、新規プロジェクトを作りましょう。~
QuickStartPanelのNew projectから、LPC8xxの「C Project」を...
MCUはLPC810を選び、CMSIS Core libraryは、CMSIS_CORE_LPC8x...
Peripheral Driver Libraryは、lpc800_driver_libを選択しま...
DSPLIBは使わないので、Noneのままです。~
MTBの設定はチェックを外して無効にしておきます。~
これはデバッグに使用する機能ですが、トレースデータを保存...
Code Read Protectについては、コードを読み出されないように...
プロジェクトが作成されたら、右クリックからプロパティを開...
「Project References」は、CMSIS_CORE_LPC8xxと、lpc800_dri...
これで、変数や関数の定義を、プロジェクトをまたいで遡るこ...
ここまでで、プロジェクトの設定は終わりですので、反映させ...
QuickStartPanelからBuildを実行して、axfファイルが出来上が...
** ソースコード [#nf8e0b77]
以下、ソースコード。~
まず、最初から作られているmain.cをベースに、以下のinclude...
// TODO: insert other include files here
#include "lpc8xx_gpio.h"
次に、指定時間waitするためのカウンタをグローバル変数とし...
これは、昔やったやつと同じですね。~
// TODO: insert other definitions and declarations here
volatile uint32_t msTicks = 0;
void SysTick_Handler(void) {
msTicks++;
}
void systick_delay (uint32_t delayTicks) {
uint32_t currentTicks = msTicks;
while ((msTicks - currentTicks) < delayTicks);
}
そして、メイン関数は以下のようになります。~
int main(void) {
// TODO: insert code here
SystemCoreClockUpdate();
GPIOInit();
GPIOSetDir(0, 1, 1);
GPIOSetBitValue(0, 1, 1);
SysTick_Config(SystemCoreClock / 1000);
while(1) {
systick_delay(500);
GPIOSetBitValue(0, 1, 0);
systick_delay(500);
GPIOSetBitValue(0, 1, 1);
}
return 0;
}
** ソースコード解説 [#debd3503]
最初にSystemCoreClockUpdateという関数を呼んでいますが、こ...
ただ、起動時にはSystemInitでクロックの設定がされるため、...
今回のペリフェラルドライバライブラリには、前のようなPINSE...
まぁ、基本的にはデフォルト値で問題ないことしかしていない...
GPIOInitでGPIOの初期化をし、GPIOSetDirでLEDが接続されてい...
そして、GPIOSetBitValueで点灯させます。~
GPIOSetDirやGPIOSetBitValueは、実際には最初の引数の0(ポー...
PIO0しかないので、指定する必要がないけど、互換性のために...
とはいえ、以前使用したLPC176X用のライブラリとは、微妙にI/...
次に、SysTick_Configで、1msの割り込みを発生させます。~
これも以前に説明しているので、詳細は割愛します。~
無限ループの中身は、500msのwaitを行うサブ関数を呼んで、1...
簡単ですね。~
** 実行・デバッグ [#mb402324]
ソースが出来て、ビルドが通ったら、いよいよ実行です。~
以前はLPC1769と一体になっているLPC-Linkを使用しましたが、...
LPC-Link2とPCをUSBで繋いで、さらにLPC-Link2と基板を繋ぎま...
ちなみに、LPC-Link2のジャンパは、RedLinkとしてLPCXpresso...
繋がったら、QuickStartPanelのDebugを押します。~
無事に実行できると、自動的にmain関数の先頭でbreakがかかり...
Step Over(F6)でステップ実行を行い、最初のGPIOSetBitValue...
Resume(F8)を押せば、LEDが点滅します。~
Suspendで、その時実行している箇所で停止します。~
Terminate(Ctrl+F2)でデバッガは停止し、マイコン自体はその...
この辺りも前と同じですね。~
#u2b(cTsCXDH9lP4,w=640,h=360)
** クロックの設定 [#ibdc6a5e]
デバッガで停止中に、SysTick_Configの引数に指定している、S...
ポップアップが表示されて、12000000という数字が値として設...
LPC810は30MHzでの動作が可能ですが、デフォルトでは12MHzで...
LPC1769の時と同様、30MHzで動作させるためには、CMSISライブ...
こちらの詳細につきましては、以下のblogがとてもわかりやす...
参考にさせていただきました。
[[人と技術のマッシュアップ-LPCXpressoとLPC800-MAXでマイコ...
以上で、LPC810版のLEDチカチカは終了です。~
ページ名: