※このプログラムも数秒でハングする。
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 件のコメント:
コメントを投稿