1st 硬件接法
固件默认为两个GPIO中断输入,M180, ph2.0座子_J38, SPIDI,SPIDO 两个引脚_中断输入(开机默认为0V,外部上拉3.3V(不能超过3.3V否则烧RK3288) 为中断触发!!硬件触发方式为稳定的“上升沿触发 ”__| ̄ ̄ " ),SPICLK,SPICSN 两个引脚_GPIO输出_开机默认为0V
2st 软件APP调用中断,DEMO 代码
public void DisplayToast(String str)
{
Toast.makeText(this, str, Toast.LENGTH_SHORT).show();
}
//for test EINT
public boolean onKeyDown(int keyCode, KeyEvent event){
switch (keyCode)
{
case KeyEvent.KEYCODE_TV_INPUT_COMPONENT_1: //for KEY_GINTA
//DisplayToast("RK3288_外部中断_SP1DI,EINT1");
Log.e(MainActivity.ACTIVITY_TAG, "RK3288_外部中断_SP1DI,EINT1..............");
break;
case KeyEvent.KEYCODE_TV_INPUT_COMPONENT_2: //for KEY_GINTB
//DisplayToast("RK3288_外部中断_SP1DO,EINT2");
Log.e(MainActivity.ACTIVITY_TAG, "RK3288_外部中断_SP1DO,EINT2..............");
break;
default:
break;
}
return super.onKeyDown(keyCode, event);
}
3st 软件APP调用GPIO 输出 ,DEMO 代码
a, xxxxx.java
package com.example.gpio_test;
import com.example.gpio_test.GpioJni;
import android.os.Bundle;
import android.util.Log;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.view.KeyEvent;
import android.view.MotionEvent;
import android.view.View.OnClickListener;
import android.widget.Toast;
//#define SPICLLK 236 //add by jiangdou
//#define SPICSN 237 //add by jiangdou
/*
* public native int rkgpio_high(int gpio, int value);
* public native int rkgpio_low(int gpio, int value);
*
*/
public class MainActivity extends Activity {
public static final int SPICLLK = 236; //for rk3288_GPIO7_B4
public static final int SPICSN = 237; for rk3288_GPIO7_B5
public static final int GPIO_HIGH = 1;
public static final int GPIO_LOW = 0;
private static final String ACTIVITY_TAG="GpioDemo";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.gpio_test);
//加载libledunders.so
final GpioJni Rk3288_Gpio = new GpioJni(); // 实例化函数
final Button Gpiohigh = (Button)findViewById(R.id.gpiohigh);
final Button Gpiolow = (Button)findViewById(R.id.gpiolow);
Gpiohigh.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO 自动生成的方法存根
Rk3288_Gpio.rkgpio_high(SPICLLK, GPIO_HIGH); //RK3288_GPIO输出HIGH
DisplayToast("设置RK3288_GPIO7_B4 OUTPUT HIGH DEMO by jiangdou");
}
});
Gpiolow.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO 自动生成的方法存根
Rk3288_Gpio.rkgpio_low(SPICLLK, GPIO_LOW); //RK3288_GPIO输出LOW
DisplayToast("设置RK3288_GPIO7_B4 OUTPUT LOW DEMO by jiangdou");
}
});
//return super.onKeyDown(keyCode, event);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
public void DisplayToast(String str)
{
Toast.makeText(this, str, Toast.LENGTH_SHORT).show();
}
//for test EINT
public boolean onKeyDown(int keyCode, KeyEvent event){
switch (keyCode)
{
case KeyEvent.KEYCODE_TV_INPUT_COMPONENT_1: //for KEY_GINTA
//DisplayToast("RK3288_外部中断_SP1DI,EINT1");
Log.e(MainActivity.ACTIVITY_TAG, "RK3288_外部中断_SP1DI,EINT1..............");
break;
case KeyEvent.KEYCODE_TV_INPUT_COMPONENT_2: //for KEY_GINTB
//DisplayToast("RK3288_外部中断_SP1DO,EINT2");
Log.e(MainActivity.ACTIVITY_TAG, "RK3288_外部中断_SP1DO,EINT2..............");
break;
default:
break;
}
return super.onKeyDown(keyCode, event);
}
}
b,xxxx.java
package com.example.gpio_test;
public class GpioJni {
static {
System.loadLibrary("rk32gpio_jni");
}
public native int rkgpio_high(int gpio, int value);
public native int rkgpio_low(int gpio, int value);
}