2009年5月4日月曜日

フェーズ3 Key入力テスト NXP LPC2388

4つのスイッチを押すと、それぞれに応じて、LEDが点灯する。
※このプログラムも数秒でハングする。
1.キー入力使用 main()関数 ソース
/****************************************************************************
タイマ割り込みサンプルプログラム(オンボードLED点灯制御)
****************************************************************************/
#define _EXTERN_
/* Includes ------------------------------------------------------------------*/
#include "LPC_BaseLib.h"

/* LED点滅用変数*/
int toggle0;
/* CPU割り込み処理*/
void CPU_IRQInterrupt(void)
{
  switch(VICIRQStatus)
  {
  // for Timer0 IQR Interrupt  ハートビート用割り込み
    case INT_IRQ_TIMER0:
      if(toggle0 == 0)
      {
        toggle0 = 1;
        Led_0_ON();
      }
      else
      {
         toggle0 = 0;
         Led_0_OFF();
      }
      /* タイマ割り込みクリア*/
      TIMER_InterruptReset(&TIMER_0);
      break;
    case INT_IRQ_TIMER1:
    ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
    case INT_IRQ_TIMER3:
      // for Timer3 IQR Interrupt
      Key_Sarch();
      /* タイマ割り込みクリア*/
      TIMER_InterruptReset(&TIMER_3);
      break;
    default:
    ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
    ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・

/* タイマ割り込みLED点灯制御プログラム*/
int main(void)
{
    GPIO_InitTypeDef GPIO_InitStructure;
    TIMER_InitTypeDef TIMER_InitStructure;

    SYS_Initialize();

    /* LED点灯制御設定*/
    Led_Init();

    Key_Init();

    // タイマ設定 Timer0 Use for Hart Beet
    TIMER_StructInit(&TIMER_InitStructure);
    TIMER_InitStructure.TIMER_ID = TIMER_ID_0;
    ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
    ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
2.LPC用Key入力関数側
#include
#include "LPC_BaseLib.h"

void Key_Init()
{
  key_gpioinit();
  Key_Proc_Mode = KEY_MODE_MAIN;
}

// 前回GPIOがLow今回Highの場合 キー入力(Push)とみなす。
void Key_Sarch()
{
  if(Ref_Key_0 == VAL_KEY_ON && KEY_VAL_0 == VAL_KEY_OFF)
  {
    Key_Intrrupt(ID_KEY_0);
  }
  Ref_Key_0 = KEY_VAL_0;

  if(Ref_Key_1 == VAL_KEY_ON && KEY_VAL_1 == VAL_KEY_OFF)
  {
Key_Intrrupt(ID_KEY_1);
  }
  Ref_Key_1 = KEY_VAL_1;

    ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
    ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・

//キー対応GPIO設定
void key_gpioinit(void)
{
  GPIO_InitTypeDef GPIO_InitStructure;
  // GPIO 0
  GPIO_InitStructure.GPIO_ID = GPIO_Port_0;
  GPIO_InitStructure.GPIO_Pins = GPIO_Pin_0 GPIO_Pin_1 GPIO_Pin_10 GPIO_Pin_11   GPIO_Pin_17;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_FAST;
  GPIO_InitStructure.GPIO_ModeIO = GPIO_Mode_INPUT;
  GPIO_InitStructure.GPIO_ModePin = GPIO_ModePin_PULLUP;

  GPIO_Init(&GPIO_0,&GPIO_InitStructure);
}

3.キー入力動作定義
#include

#include "LPC_BaseLib.h"

unsigned int icnt;

voidKey_Intrruptint key_id)
{
  switch(key_id)
  {
    case ID_KEY_0:
      Led_1_ON();
      Led_2_OFF();
      Led_3_OFF();
      break;
    case ID_KEY_1:
      Led_1_OFF();
      Led_2_ON();

    ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
    ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・

0 件のコメント:

コメントを投稿