CubieBoard中文论坛

 找回密码
 立即注册
搜索
热搜: unable
查看: 13359|回复: 12

用C和GPIO库控制板子上的两个LED

[复制链接]
发表于 2013-8-8 20:23:13 | 显示全部楼层 |阅读模式
本程序已经集成在CbOS 1.0 beta3内,目的为用C语言控制板载的两个LED
gpio_lib.c gpio_lib.h在hipboi的python控制GPIO的帖子里找。
用法:
led【LED号(1或2)】 【1(高电平)或0(低电平)】
代码:
  1. #include <stdlib.h>
  2. #include <stdio.h>
  3. #include "gpio_lib.c"
  4. #include <string.h>

  5. int dy(int led,int tf)
  6. {
  7.     int port;
  8.     if(led == 1){
  9.         port=20;
  10.     }else if(led == 2){
  11.         port=21;
  12.     }else{
  13.         printf("Unknown port.\n");
  14.         printf("led [1 or 2(led)] [1(high) or 0(low)]\n");
  15.         return 1;
  16.     }
  17.     //printf("SUNXI GPIO tool\n");
  18.     if(SETUP_OK!=sunxi_gpio_init()){
  19.         printf("Failed to initialize GPIO\n");
  20.         return 1;
  21.     }
  22.    
  23.     if(SETUP_OK!=sunxi_gpio_set_cfgpin(SUNXI_GPH(port),OUTPUT)){
  24.         printf("Failed to config GPIO pin\n");
  25.         return 1;
  26.     }
  27.    
  28.     int i;
  29.     if(tf == 0){
  30.     if(sunxi_gpio_output(SUNXI_GPH(port),LOW)){
  31.         printf("Failed to set GPIO pin value\n");
  32.         return 1;
  33.     }
  34.     }else{
  35.         if(sunxi_gpio_output(SUNXI_GPH(port),HIGH)){
  36.             printf("Failed to set GPIO pin value\n");
  37.             return 1;
  38.         }
  39.     }
  40.     sunxi_gpio_cleanup();
  41.    
  42.     return 0;
  43.    
  44. }

  45. int main(int argc,char* argv[]){
  46.     if(argc != 3){
  47.     printf("led [led1 or 2] [1(high) or 0(low)]\n");
  48.     return 1;
  49.     }else{
  50.     int a = 0;
  51.     int i = 0;
  52.     for(i=0;i<strlen(argv[1]);i++){
  53.         a*=10;
  54.         a+=argv[1][i]-'0';
  55.     }
  56.     //dy(a,argv[2][0]-'0');
  57.     //printf("%d \\ %d \n",argv[1][0]-'0',argv[2][0]-'0');
  58.     //printf("%c\n",argv[1][0]);
  59.     return dy(a,argv[2][0]-'0');
  60.     }
  61. }
复制代码
回复

使用道具 举报

发表于 2013-8-16 11:00:22 | 显示全部楼层
在有gpio_lib.c gpio_lib.h的目录下,源代码文件为LED.c 然后 gcc -o LED LED.c
出现以下问题 ,求解
In file included from gpio_lib.c:39:0,                                          
                 from LED.c:4:                                                  
gpio_lib.h:63:2: error: invalid preprocessing directive #efine                  
gpio_lib.h:77:1: error: 'SUNXI_GPIO_E_NR' undeclared here (not in a function)  
回复 支持 反对

使用道具 举报

发表于 2013-8-16 12:43:46 | 显示全部楼层
darson 发表于 2013-8-16 11:00
在有gpio_lib.c gpio_lib.h的目录下,源代码文件为LED.c 然后 gcc -o LED LED.c
出现以下问题 ,求解
In fi ...

问题解决了
$ gcc gpio_lib.c -c
$ gcc LED.c -c
$ gcc LED.o gpio_lib.o -o LED
得到LED执行文件,但不理解怎么执行 ,求解!
回复 支持 反对

使用道具 举报

发表于 2013-9-8 15:48:10 | 显示全部楼层
darson 发表于 2013-8-16 12:43
问题解决了
$ gcc gpio_lib.c -c
$ gcc LED.c -c

./led 1 1

不过我显示初始化失败?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-9-28 08:59:50 | 显示全部楼层
寒寒 发表于 2013-9-8 15:48
./led 1 1

不过我显示初始化失败?

Are you using root?
回复 支持 反对

使用道具 举报

发表于 2013-9-28 17:25:19 | 显示全部楼层
tll 发表于 2013-9-28 08:59
Are you using root?

是的, sudo ./led 1 1就可以亮了
回复 支持 反对

使用道具 举报

发表于 2013-9-29 19:58:11 | 显示全部楼层
謝謝呀 可以參考
回复 支持 反对

使用道具 举报

发表于 2014-2-15 16:32:32 | 显示全部楼层
怎么把这个程序编译到内核里去呢?求指点?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-2-15 22:56:02 | 显示全部楼层
yuzj 发表于 2014-2-15 16:32
怎么把这个程序编译到内核里去呢?求指点?

选y嘛。
回复 支持 反对

使用道具 举报

发表于 2014-2-17 21:55:16 | 显示全部楼层
现在关键就是我不知道怎么编译内核。。。是需要源代码吗,我用的是官网下载的lubuntu12.04的img镜像,内核是3.4+的?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|粤ICP备13051116号|cubie.cc---深刻的嵌入式技术讨论社区

GMT+8, 2024-11-23 20:07 , Processed in 0.026390 second(s), 15 queries .

Powered by Discuz! X3.4

© 2001-2012 Comsenz Inc. | Style by Coxxs

返回顶部