这一篇我们主要讲树莓派的GPIO口控制。
还是用了wirningPi这个库。
我们用了6个Pin脚来模拟按键。
wirningPi的24-29脚。(因为之后我们会模拟选择,确认,上下左右)
GPIO.cpp:
#include "bsp_key.h"
//设置GPIO口模式
void Key_StatusSet(void)
{
//初始化库
wiringPiSetup();
//设置输入模式
pinMode(SW5_OPTION, INPUT);
pinMode(SW2_OK, INPUT);
pinMode(SW6_UP, INPUT);
pinMode(SW4_LEFT, INPUT);
pinMode(SW1_DOWN, INPUT);
pinMode(SW3_RIGHT, INPUT);
//设置上拉模式
pullUpDnControl(SW5_OPTION, PUD_UP); // pull up
pullUpDnControl(SW2_OK, PUD_UP);
pullUpDnControl(SW6_UP, PUD_UP);
pullUpDnControl(SW4_LEFT, PUD_UP);
pullUpDnControl(SW1_DOWN, PUD_UP);
pullUpDnControl(SW3_RIGHT, PUD_UP);
}
//检查按钮是否被按下
int Key_PressCheck(int key_num)
{
if(digitalRead(key_num) == 0) // Press
{
delay(200); //delay for debounce
while(digitalRead(key_num) == 0);
return 1;
}
else
return 0;
}
//----------------------test-----------------------------
int key1 = 0,key2 = 0,key3 = 0,key4 = 0;
void test(void)
{
if(Key_PressCheck(SW5_OPTION) == 1)
key1++;
else if(Key_PressCheck(SW3_RIGHT) == 1)
key2++;
else if(Key_PressCheck(SW4_LEFT) == 1)
key3++;
else if(Key_PressCheck(SW2_OK) == 1)
key4++;
else
printf("None Key Press!!!\n");
printf("key1 = %d ,key2 = %d ,key3 = %d ,key4 = %d \n",key1,key2,key3,key4);
}
//-----------------------------------------------------
GPIO.h
#ifndef BSP_KEY_H
#define BSP_KEY_H
#include <stdio.h>
#include <wiringPi.h>
//#define KEY1_SELECT 26
//#define KEY2_ADD 27
//#define KEY3_SUB 28
//#define KEY4_CO