码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • arm-linux 应用层调用驱动函数


    需要调用头文件

    #include "stdio.h"

    #include "unistd.h" 

     /*

    unistd.h 是 C 和 C++ 程序设计语言中提供对 POSIX 操作系统 API 的访问功能的头文件的名称。该头文件由 POSIX.1 标准(单一UNIX规范的基础)提出,故所有遵循该标准的操作系统和编译器均应提供该头文件(如 Unix 的所有官方版本,包括 Mac OS X、Linux 等)。

    对于类 Unix 系统,unistd.h 中所定义的接口通常都是大量针对系统调用的封装(英语:wrapper functions),如 fork、pipe 以及各种 I/O 原语(read、write、close 等等)。
    */

    #include "sys/types.h" //数据类型

    #include "sys/stat.h"

    /*

    #include <sys/stat.h> 文件状态,是unix/linux系统定义文件状态所在的伪标准头文件。

    */

    #include "fcntl.h"

    //引用linux c头文件#include<sys/types.h>和#include<fcntl.h>头文件总结_码莎拉蒂 .的博客-CSDN博客

    #include "stdlib.h"

    #include "string.h"

    1. #include "stdio.h"
    2. #include "unistd.h"
    3. #include "sys/types.h"
    4. #include "sys/stat.h"
    5. #include "fcntl.h"
    6. #include "stdlib.h"
    7. #include "string.h"
    8. #define LEDOFF 0
    9. #define LEDON 1
    10. /*
    11. * @description : main主程序
    12. * @param - argc : argv数组元素个数
    13. * @param - argv : 具体参数
    14. * @return : 0 成功;其他 失败
    15. */
    16. int main(int argc, char *argv[])
    17. {
    18. int fd, retvalue;
    19. char *filename;
    20. unsigned char databuf[1];
    21. if(argc != 3){
    22. printf("Error Usage!\r\n");
    23. return -1;
    24. }
    25. filename = argv[1];
    26. /* 打开led驱动 */
    27. fd = open(filename, O_RDWR);
    28. if(fd < 0){
    29. printf("file %s open failed!\r\n", argv[1]);
    30. return -1;
    31. }
    32. databuf[0] = atoi(argv[2]); /* 要执行的操作:打开或关闭 */
    33. /* 向/dev/led文件写入数据 */
    34. retvalue = write(fd, databuf, sizeof(databuf));
    35. if(retvalue < 0){
    36. printf("LED Control Failed!\r\n");
    37. close(fd);
    38. return -1;
    39. }
    40. retvalue = close(fd); /* 关闭文件 */
    41. if(retvalue < 0){
    42. printf("file %s close failed!\r\n", argv[1]);
    43. return -1;
    44. }
    45. return 0;
    46. }

    在开发板运行/ledApp /dev/gpioled 1     gpioled为驱动的名字 通过filename = argv[1]获取;

                                    1位值 通过    databuf[0] = atoi(argv[2]);    /* 要执行的操作:打开或关闭 */获取

  • 相关阅读:
    智能合约漏洞案例,Palmswap 90 万美元漏洞分析
    基于Spark封装的二次开发工程edata-base,介绍
    Mybatis的优缺点
    基于Python实现的类Pascal语言的词法分析和语法分析器
    雷电模拟器上使用第一个frida(一)之安装
    使用 ThreadPoolExecutor 管理线程池
    期货开户手续费加一分都是薄利多销
    计算机网络-计算机网络体系结构-传输层
    浅析云计算领域的专业名词
    Flink -- window(窗口)
  • 原文地址:https://blog.csdn.net/L1153413073/article/details/125500727
  • 最新文章
  • 【JVM】编译执行与解释执行的区别是什么?JVM 使用哪种方式?
    用 Hashids 优雅解决 C 端自增 ID 暴露问题
    V8引擎 精品漫游指南--Ignition篇(上) 指令 栈帧 槽位 调用约定 内存布局 基础内容
    LLVM Pass快速入门(四):代码插桩
    milkup:桌面端 markdown AI续写和即时渲染
    基于项目工程构建SBOM(软件物料清单)的研究
    鸿蒙应用开发UI基础第二节:鸿蒙应用程序框架核心解析与实操
    .NET 中如何快速实现 List 集合去重?
    扣子Coze实战:从0到1打造抖音+小红书热点监控智能体
    浅谈数据访问层
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号