码农知识堂 - 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]);    /* 要执行的操作:打开或关闭 */获取

  • 相关阅读:
    手把手教你CSP系列之style-src
    【Vue】计算属性 监听属性 组件通信 动态组件 插槽 vue-cli脚手架
    Codeforces Round #790 (Div. 4)
    微前端——single-spa源码学习
    Intel汇编-内联汇编使用寄存器
    基于ssm水果销售管理系统
    公网远程访问GeoServe Web管理界面【内网穿透】
    【网页设计】期末大作业html+css(体育网站)--杜丹特篮球介绍8页 带报告
    Linux驱动开发(四)---树莓派内核编译
    多维数组求和函数
  • 原文地址:https://blog.csdn.net/L1153413073/article/details/125500727
  • 最新文章
  • 沪漂五周年了:我越来越迷茫了
    Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
    MySQL-Seconds_behind_master的精度误差
    [MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
    AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
    Agent OS :五种驯服不确定性的范式
    PortSwigger SQL注入LAB11
    数据库即时编译JIT
    [Begin]AI Learn Data Day 0
    深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号