【赛昉科技昉·星光RISC-V单板计算机试用体验】驱动电机

描述

本文来源电子发烧友社区,作者:黄宝亚, 帖子地址:https://bbs.elecfans.com/jishu_2289350_1_1.html


使用448和450口,实现电机正传几圈,翻转几圈,一直循环
程序如下



  1. #include
  2. #include   
  3. #include
  4. #include
  5. #include      //define O_WRONLY and O_RDONLY  
  6. #define SYSFS_GPIO_EXPORT           "/sys/class/gpio/export"  
  7. #define SYSFS_GPIO_RST_PIN_MOTOER1"448"   
  8. #define SYSFS_GPIO_RST_DIR          "/sys/class/gpio/gpio448/direction"
  9. #define SYSFS_GPIO_RST_DIR_MOTOER1"OUT"  
  10. #define SYSFS_GPIO_RST_MOTOER1 "/sys/class/gpio/gpio448/value"
  11. #define SYSFS_GPIO_RST_MOTOER1_H        "1"
  12. #define SYSFS_GPIO_RST_MOTOER1 _L        "0"
  13.  
  14. #define SYSFS_GPIO_EXPORT "/sys/class/gpio/export"
  15. #define SYSFS_GPIO_RST_PIN_MOTOER2 "450"
  16. #define SYSFS_GPIO_RST_DIR "/sys/class/gpio/gpio448/direction"
  17. #define SYSFS_GPIO_RST_DIR_MOTOER2 "OUT"
  18. #define SYSFS_GPIO_RST_MOTOER2  "/sys/class/gpio/gpio448/value"
  19. #define SYSFS_GPIO_RST_MOTOER2 _H "1"
  20. #define SYSFS_GPIO_RST_MOTOER2 _L "0"
  21.  
  22. int main()
  23. {
  24.     int fd;
  25.          //打开端口/sys/class/gpio# echo 448 > export
  26.          fd = open(SYSFS_GPIO_EXPORT, O_WRONLY);
  27.          if(fd == -1)
  28.          {
  29.                    printf("ERR: Radio hard reset pin open error.n");
  30.                    return EXIT_FAILURE;
  31.          }
  32.          write(fd, SYSFS_GPIO_RST_PIN_MOTOER1  ,sizeof(SYSFS_GPIO_RST_PIN_MOTOER1  ));
  33.          close(fd);
  34.          //设置端口方向/sys/class/gpio/gpio448# echo out > direction
  35.          fd = open(SYSFS_GPIO_RST_DIR, O_WRONLY);
  36.          if(fd == -1)
  37.          {
  38.                    printf("ERR: Radio hard reset pin direction open error.n");
  39.                    return EXIT_FAILURE;
  40.          }
  41.          write(fd, SYSFS_GPIO_RST_DIR_MOTOER2 , sizeof(SYSFS_GPIO_RST_DIR_MOTOER2 ));
  42.          close(fd);
  43. //设置端口方向/sys/class/gpio/gpio450# echo out > direction
  44. fd = open(SYSFS_GPIO_RST_DIR, O_WRONLY);
  45. if(fd == -1)
  46. {
  47. printf("ERR: Radio hard reset pin direction open error.n");
  48. return EXIT_FAILURE;
  49. }
  50. write(fd, SYSFS_GPIO_RST_DIR_MOTOER2 , sizeof(SYSFS_GPIO_RST_DIR_MOTOER2 ));
  51. close(fd);
  52.  
  53.  
  54.  
  55.          //输出复位信号: 拉高>100ns
  56.          fd = open(SYSFS_GPIO_RST_MOTOER1  , O_RDWR);
  57.          if(fd == -1)
  58.          {
  59.                    printf("ERR: Radio hard reset pin value open error.n");
  60.                    return EXIT_FAILURE;
  61.          }
  62.          while(1)
  63.          {
  64.                    write(fd, SYSFS_GPIO_RST_MOTOER1 _H, sizeof(SYSFS_GPIO_RST_MOTOER1 _H));
  65. write(fd, SYSFS_GPIO_RST_MOTOER2 _H, sizeof(SYSFS_GPIO_RST_MOTOER2 _H));
  66.                    usleep(1000000);
  67. write(fd, SYSFS_GPIO_RST_ MOTOER1 _H, sizeof(SYSFS_GPIO_RST_ MOTOER1 _H));
  68. write(fd, SYSFS_GPIO_RST_ MOTOER2 _H, sizeof(SYSFS_GPIO_RST_ MOTOER2 _H));
  69.                    usleep(1000000);
  70.          }
  71.          close(fd);
  72.          printf("INFO: Radio hard reset pin value open error.n");
  73.          return 0;
  74. }
复制代码

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分