微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 硬件工程师文库 > 基于Linux系统实现DragonBoard 410c GPIO的控制

基于Linux系统实现DragonBoard 410c GPIO的控制

时间:02-23 来源:互联网 点击:

电平来熄灭LED,其实现函数如下:

int set_led_status(int Led,int status){

if(Write_GPIO(led, status)==0){

return 0;

}

else return -1;

}

基于对GPIO的读写函数完成上述KEY的状态读取和LED的状态控制函数后,就可以利用这两个函数方便的构建按键控制LED的程序,其中.c中的部分核心代码如下:

#include

#include

#include

#include

#include

#define MAX_BUF 10

#define GPIO_A 36

#define GPIO_B 12

#define KEY_DOWN 1;

#define KEY_UP 0;

#define LED_LIGHT;

#define LED_EXTING;

int Export_GPIO(int gpio);

int UnExport_GPIO(int gpio);

int Write_GPIO(int gpio, int value);

int Read_GPIO(int gpio, int *value);

int get_key_status(int Key);

int set_led_status(int Led,int status);

int main(void) {

int KeyStatus=KEY_UP;

int LedStatus=LED_EXTING;

ret = Export_GPIO(GPIO_A);

if(ret != 0)

printf("Error exporting GPIO_%d", GPIO_A);

ret = Export_GPIO(GPIO_B);

if(ret != 0)

printf("Error exporting GPIO_%d", GPIO_B);

printf("you can press key to change LED status\n");

while(1) {

KeyStatus=get_key_status(GPIO_A);

if(keyStatus!=-1) LedStatus=KeyStatus;

else{

printf("get_key_status erro!\n");

return -1;

if(-1== set_led_status(GPIO_B, LedStatus)) {

printf("set_led_status erro!\n");

return -1;

}

}

ret = UnExport_GPIO(GPIO_A);

if(ret != 0)

printf("Error UnExporting GPIO_%d", GPIO_A);

ret = UnExport_GPIO(GPIO_B);

if(ret != 0)

printf("Error UnExporting GPIO_%d", GPIO_B); return 0;

}

以上就是整个利用410c开发板在linux操作系统环境下实现对GPIO的操作,通过GPIO口读取按键信息实现对LED的控制。

三、程序编译和运行

在linux环境下,可以通过arm-linux-gcc交叉编译工具来编译平台的程序,生成可执行的程序文件,然后下载到开发板上运行,其中编译命令参考如下:

arm-linux-gcc -o key_led_test key_led_test.c

完成编译后生成key_led_test文件,执行下面命令改变其权限,使得其成为可执行文件:

chmod 777 key_led_test

最后执行key_led_test即可在板子上通过按按键控制LED灯。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top