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

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

ID:27870527

大小:173.50 KB

页数:7页

时间:2018-12-06

基于Linux系统实现DragonBoard 410c GPIO的控制.doc_第1页
基于Linux系统实现DragonBoard 410c GPIO的控制.doc_第2页
基于Linux系统实现DragonBoard 410c GPIO的控制.doc_第3页
基于Linux系统实现DragonBoard 410c GPIO的控制.doc_第4页
基于Linux系统实现DragonBoard 410c GPIO的控制.doc_第5页
资源描述:

《基于Linux系统实现DragonBoard 410c GPIO的控制.doc》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、基于Linux系统实现DragonBoard410cGPIO的控制  如图1所示,在DragonBoard410c开发板上,其GPIO口通过接口进行了预留,用户在开发测试过程中可以方便的通过排针或者排线接入到DragonBoard410c的GPIO口,实现与外设的连接,对外设进行控制,同时也可以通过下载DragonBoard410cGPIOPDF和使用说明文档查看其GPIO详细信息,在410c资料包中的SchemaTIcas_DragonBoard.pdf文件中对410c板子的GPIO口设计有详细的说明,如下图1给出了开发板的GPIO硬件接口J8的详细设计,通过该图可以知道整个410c

2、开发板的GPIO外部接口连接情况。    图1DragonBoard410c外部GPIO口引出接口J8的连接原理图  根据上述原理图,可以在板子上用杜邦线连接,本文在测试过程中选取的是GPIO_36和GPIO_12两个GPIO口作为控制,其中GPIO12控制LED灯,GPIO_36用于接收按键信号,检测开关是否被按下,开关每次按下LED灯状态改变一次,整个控制电路硬件连接如图2所示。    图2DragonBoard410c按键控制LED灯硬件连接示意图二、程序设计  1)在linux环境下用vim编辑器建立工程程序文件key_led_test.c,该文件是测试工程的主文件,起命令如下

3、:  mkdirkey_led_test  vimkey_led_test.c  通过GPIO口控制LED和检测按键信号的基本原理如下:  首先需要对使用的GPIO口进行导入,完成导入后的GPIO口才可以进读写,起导入GPIO口的函数机代码如下:  intExport_GPIO(intgpio){  intfd;  charbuf[MAX_BUF];  sprintf(buf,“%d”,gpio);  fd=open(“/sys/class/gpio/export”,O_WRONLY);  if(fd=100){  break;//按下时间超过1s,表示完成一次按动作,退出检测。  }

4、  }while(!tmp)  if(time>=50){//大于0.5s认为按键按下,不是干扰或者误按  returnKEY_DOWN;  }  elsereturnKEY_UP;  }  完成按键检测后,就可以根据按键来实现对LED的控制,其中LED的控制是通过输出高电平来点亮LED,输出低电平来熄灭LED,其实现函数如下:  intset_led_status(intLed,intstatus){  if(Write_GPIO(led,status)==0){  return0;  }  elsereturn-1;  }  基于对GPIO的读写函数完成上述KEY的状态读取和LED

5、的状态控制函数后,就可以利用这两个函数方便的构建按键控制LED的程序,其中.c中的部分核心代码如下:  #include  #include  #include  #include  #include  #defineMAX_BUF10  #defineGPIO_A36  #defineGPIO_B12  #defineKEY_DOWN1;  #defineKEY_UP0;  #defineLED_LIGHT;  #defineLED_EXTING;  intExport_GPIO(intgpio);  intUnExport_GPIO(intgpio);  intWrite_GPIO

6、(intgpio,intvalue);  intRead_GPIO(intgpio,int*value);  intget_key_status(intKey);  intset_led_status(intLed,intstatus);  intmain(void){  intKeyStatus=KEY_UP;  intLedStatus=LED_EXTING;  ret=Export_GPIO(GPIO_A);  if(ret!=0)  printf(“ErrorexportingGPIO_%d”,GPIO_A);  ret=Export_GPIO(GPIO_B);  if(ret

7、!=0)  printf(“ErrorexportingGPIO_%d”,GPIO_B);  printf(“youcanpresskeytochangeLEDstatus”);  while(1){  KeyStatus=get_key_status(GPIO_A);  if(keyStatus!=-1)LedStatus=KeyStatus;  else{  printf(“get_key_statuserro!”);  retur

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。