gpio控制程序求助

发布于 2022-10-15 06:54:21 字数 9688 浏览 36 评论 0

本帖最后由 embeddedlwp 于 2011-05-16 14:55 编辑

  1. int gpio_ioctl(struct inode *inode, struct file *file, unsigned int cmd, unsigned long arg){
  2.         switch(cmd){
  3.                 case -1:
  4.                         s3c2410_gpio_cfgpin(S3C2410_GPG4, S3C2410_GPG4_OUTP);         //关闭LCD背光
  5.                         s3c2410_gpio_setpin(S3C2410_GPG4, 0);
  6.                         break;
  7.                 case  1:
  8.                         s3c2410_gpio_setpin(S3C2410_GPG4, 1);                                         //开启LCD背光
  9.                         break;
  10.                 case  2:                                                                                                       //开启流水
  11.                         flag = 2;
  12.                         while(1){
  13.                                 int i;
  14.                                 for(i = 0; i < 4; i++)
  15.                                         s3c2410_gpio_cfgpin(led_table[i], led_cfg_table[i]);
  16.                                 for(i = 0; i < 4; i++){
  17.                                         s3c2410_gpio_setpin(led_table[i],0);
  18.                                         msleep(1000);
  19.                                         s3c2410_gpio_setpin(led_table[i],1);
  20.                                         if(flag == -2)
  21.                                                 goto end;
  22.                                 }
  23.                                 t++;
  24.                                 if(t == 4){
  25.                                         flag = -2;
  26.                                         t = 0;
  27.                                 }                                
  28.                         }
  29.                         break;
  30.                 case -2:                                                                                                    //关闭流水
  31.                         flag = -2;
  32.                         break;
  33.                 case  3:                                                                                                   //开启蜂鸣器
  34.                         s3c2410_gpio_cfgpin(S3C2410_GPB0, S3C2410_GPB0_OUTP);
  35.                         s3c2410_gpio_setpin(S3C2410_GPB0, 1);
  36.                         break;
  37.                 case -3:                                                                                                  //关闭蜂鸣器
  38.                         s3c2410_gpio_setpin(S3C2410_GPB0, 0);
  39.                         break;
  40.                 default:
  41.                         break;
  42.         }
  43. end:
  44.         return 0;
  45. }

复制代码
这个是ioctl程序,下边的是测试程序:

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <fcntl.h>
  4. #include <sys/ioctl.h>
  5. int main(){
  6.         int fd, cmd;
  7.         cmd = 0;
  8.         fd = open("/dev/lwp-gpio",O_RDWR);
  9.         if(fd < 0){
  10.                 printf("cannot open /dev/lwp-gpio\n");
  11.                 exit(1);
  12.         }
  13.         while(1){
  14.                 scanf("%d", &cmd);
  15.                 printf("cmd is %d\n",cmd);
  16.                 ioctl(fd, cmd);
  17.         }
  18.         close(fd);
  19.         return 0;
  20. }

复制代码
通过在终端进行输入可以选择哪个设备运行。但是如果输入2也就是流水灯,我在终端可以输入其他数,但是好像没有传到驱动的ioctl,比如输入-2关闭流水,但是流水依然照旧。怎么办呢,LCD背光,蜂鸣器都好使。也就是说流水的时候,我输入什么都不好使。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

从此见与不见 2022-10-22 06:54:21

有没有哪位大侠帮帮忙啊

ㄟ。诗瑗 2022-10-22 06:54:21

case -2:
你代码里面没有做实际关闭工作呀  只是设备了个变量值

盗梦空间 2022-10-22 06:54:21

你的flag是不是static型?

绝情姑娘 2022-10-22 06:54:21

mini2440的开发板内核已经加载过了LED驱动,你在加载你写这个驱动的时候是不是要先把开发板本身加载的驱动卸载后,才能成功呀~~我估计是这个原因

蛮可爱 2022-10-22 06:54:21

回复 1# embeddedlwp
测试程序中,调用scanf会录入字符和回车符在缓冲区,你第一次取出的字符,第二次取出的就是回车符,你看看问题是不是在这里

影子是时光的心 2022-10-22 06:54:21

关闭函数在哪?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文