- ハードウェアのセットアップと要件
- N76E003LEDおよび押しボタンインターフェース回路
- N76E003ピン配置図
- N76E003用のシンプルなGPIO制御プログラム
- N76E003のプログラミングと出力の検証
前のチュートリアルでは、基本的なLED点滅プログラムをN76E003ガイドの使用開始として使用しました。すでに、Keil IDEの構成方法と、nuvotonマイクロコントローラーユニットN76E003をプログラミングするための環境のセットアップ方法を学習しました。もう少し進んで、追加のハードウェアを制御するために基本的なGPIOインターフェースを使用する時が来ました。興味がある場合は、以下にリストされている他のマイクロコントローラーGPIOチュートリアルも確認できます-
- CubeMxおよびTrueSTUDIOを備えたSTM32Nucleo64 –LED制御
- Cosmic CGPIO制御を備えたSTM8S
- MPLABXLED点滅チュートリアルを備えたPIC
- Code Composer Studioを備えたMSP430–シンプルなLED制御
前のチュートリアルでは、出力としてIOピンを使用してLEDを点滅させるだけでした。このチュートリアルでは、別のIOピンを入力として使用し、追加のLEDを制御する方法を学習します。時間を無駄にすることなく、どのようなハードウェアのセットアップが必要かを評価しましょう。
ハードウェアのセットアップと要件
スイッチを入力として使用する必要があるため、最初に必要なのはプッシュボタンです。また、そのプッシュボタンで制御する追加のLEDが必要です。これら2つ以外に、LED電流を制限するための抵抗と、押しボタンの両端のプルダウン用の追加の抵抗も必要です。これについては、回路図のセクションで詳しく説明します。必要なコンポーネント-
- 押しボタン(具体的にはあらゆる種類の瞬間的なスイッチ-触覚スイッチ)
- LEDの任意の色
- プルダウン用の4.7k抵抗
- 100R抵抗
言うまでもなく、上記のコンポーネントの他に、N76E003マイクロコントローラーベースの開発ボードとNu-Linkプログラマーが必要です。さらに、以下に示すように、すべてのコンポーネントを接続するには、ブレッドボードとフックアップワイヤも必要です。
N76E003LEDおよび押しボタンインターフェース回路
以下の回路図でわかるように、開発ボード内にあるテストLEDはポート1.4に接続され、追加のLEDはポート1.5に接続されています。抵抗R3はLED電流を制限するために使用されます。
1.6ピンにはSWという名前の押しボタンが接続されています。ボタンを押すたびに、ピンがハイになります。そうしないと、4.7Kのプルダウン抵抗R1によってローになります。この概念に慣れていない場合は、プルアップ抵抗とプルダウン抵抗の詳細を学ぶことができます。
このピンは、プログラマーがアクセスするプログラム関連のピンでもあります。プログラムデータの送信に使用します。ただし、これらのピンを選択する理由を確認し、N76E003のピンマッピングに関する公正な情報を取得します。
N76E003ピン配置図
N76E003のピン配列は下の画像で見ることができます-
ご覧のとおり、各ピンには複数の機能があり、さまざまな目的に使用できます。例を見てみましょう。ピン1.7は、割り込み、アナログ入力、または汎用入出力操作として使用できます。したがって、いずれかのピンがI / Oピンとして使用されている場合、それぞれの機能は使用できません。
このため、LED出力ピンとして使用されるピン1.5は、PWMおよびその他の機能を失います。ただし、このプロジェクトには別の機能は必要ないため、これは問題ではありません。接続を容易にするためにGNDピンとVDDピンが最も近くにあるため、出力としてピン1.5、入力としてピン1.6を選択した理由。
ただし、このマイクロコントローラでは、20ピンのうち18ピンをGPIOピンとして使用できます。ピン2.0はリセット入力専用であり、出力として使用することはできません。このピン以外のすべてのピンは、以下のモードで構成できます。
データシートによると、PxM1.nとPxM2.nは、I / Oポートの制御動作を決定するために使用される2つのレジスタです。さて、GPIOポートの書き込みと読み取りは、まったく別のことです。ポート制御レジスタへの書き込みはポートのラッチ状態を変更するのに対し、ポートの読み取りは論理状態のステータスを取得するためです。ただし、ポートを読み取るには、入力モードに設定する必要があります。
N76E003用のシンプルなGPIO制御プログラム
このチュートリアルで使用される完全なプログラムは、このページの下部にあります。コードの説明は次のとおりです。
ピンを入力として設定する
最初に入力から始めましょう。前に説明したように、ポートのステータスを読み取るには、ポートを入力として設定する必要があります。したがって、入力スイッチピンとしてP1.6を選択したので、以下のコードスニペット行で示しています。
#define SW P16
これと同じピンを入力として設定する必要があります。したがって、セットアップ機能では、以下の行を使用してピンを入力として設定します。
void setup(void){P14_Quasi_Mode; P15_Quasi_Mode; P16_Input_Mode; }
この行 P16_Input_Mode; ピンビットをP1M1- = SET_BIT6 として設定する「BSPインクルードライブラリ」の Function_define.h ヘッダーファイルで定義されています 。 P1M2&= 〜SET_BIT6 。 SET_BIT6は 、同じヘッダファイルに定義されているままの
#define SET_BIT6 0x40
ピンを出力として設定する
入力ピンと同じように、オンボードテストLEDと外部LED1によって使用される出力ピンも、それぞれのPINを使用してコードの最初のセクションで定義されます。
#define Test_LED P14 #define LED1 P15
これらのピンは、以下の行を使用してセットアップ機能の出力として設定されます。
void setup(void){ P14_Quasi_Mode; //出力P15_Quasi_Mode; //出力P16_Input_Mode; }
これらの行は、 Function_define.h ヘッダーファイルでも定義されており、 ピンビットをP1M1&= 〜SET_BIT4; として設定します 。 P1M2&= 〜SET_BIT4 。 SET_BIT6は 、同じヘッダファイルに定義されているままの
#define SET_BIT4 0x10
無限のWhileループ
ハードウェア。電源に接続され、継続的に出力を提供するように完全に機能している場合、アプリケーションは停止しません。それは無限に同じことをします。これが無限のwhileループの機能です。whileループ内のアプリケーションは無限に実行されます。
while(1){ Test_LED = 0; sw_delay(150); Test_LED = 1; sw_delay(150); if(SW == 1){LED1 = 0; } else {LED1 = 1; }}}
上記のwhileループは、 sw_delay 値に従ってLEDを点滅させ、SWのステータスもチェックします。スイッチを押すとP1.6がハイになり、押すと読み取り状態が1になります。このとき、スイッチを押してポートP1.6をハイのままにすると、 LED1が点灯します。
N76E003のプログラミングと出力の検証
私たちがでN76E003の使用を開始するチュートリアル、私たちは私たちのボードをプログラムするためにここに同じ手順を繰り返すことになりますので、すでにN76E003をプログラムする方法を学びました。コードは正常にコンパイルされ、0の警告と0のエラーを返し、Keilによるデフォルトのフラッシュ方法を使用してフラッシュされました。
上の画像でわかるように、プッシュボタンを押すと外部LEDが点灯します。プロジェクトの完全な動作は、以下にリンクされているビデオで見つけることができます。チュートリアルを楽しんで、質問がある場合に役立つことを学んだことを願っています。下のコメントセクションに残してください。フォーラムを使用して、他の技術的な質問をすることもできます。