查看: 3786|回复: 1

[i.MX6ULL竞赛专区] 【我的项目666--智能楼宇门禁】通过文件读写操作GPIO点灯

[复制链接]
  • TA的每日心情
    开心
    2018-4-20 15:04
  • 签到天数: 8 天

    连续签到: 1 天

    [LV.3]偶尔看看II

    49

    主题

    188

    帖子

    1

    金牌会员

    Rank: 6Rank: 6

    积分
    3263
    最后登录
    2023-7-24
    发表于 2018-7-10 23:34:03 | 显示全部楼层 |阅读模式
    本帖最后由 donatello1996 于 2018-7-18 23:30 编辑

        在Linux嵌入式系统中,要直接通过寄存器来点灯比较难,但是Linux嵌入式系统提供了一种由内核向用户空间映射的通道,使用户可以通过操作文件的方式直接操作GPIO的输出电平,具体方法如下。
        首先查找米尔IOT开发板中可以直接操作的GPIO引脚,像J2排针的GPIO_5和GPIO_9:
    24.jpg
    在后续的实际操作中,只有GPIO_9可以成功,因此就只拿GPIO_9来作为例子。首先,我们需要进入/sys/class/gpio目录,查找GPIO相关操作的文件
    25.jpg
    其中export是建立映射通道(内核-》用户空间)的文件,而unexport的作用相反,是解除映射通道的文件。首先,我们需要
    1. echo 9 > export
    复制代码

    来使GPIO_9的内存地址暴露在用户可操作空间中。可以看到,执行完这行语句之后,目录下多了gpio9这个文件夹:
    26.jpg
    进入gpio9文件夹:
    1. cd gpio9
    复制代码
    27.jpg


    其中direction是可读可写文件,写入字符串"in"则表示引脚输入,写入字符串"out"则表示引脚输出,我们要写入"out"以便点灯:
    1. echo "out" > direction
    复制代码


    当direction文件被写入out之后,对value文件写入数据就可以控制输出电平:
    1. echo 1 > value
    2. echo 0 > value
    复制代码


    之后,我们就可以将这个引脚接上继电器,以控制其它外设。在程序中我们也可以写一段代码控制这个引脚交替100ms闪烁:
    1. system("echo 9 > /sys/class/gpio/export");
    2. system("echo "out" > /sys/class/gpio/gpio9/direction");
    3. while(1)
    4. {
    5.         system("echo 1 > /sys/class/gpio/gpio9/value");               
    6.         usleep(100*1000);
    7.         system("echo 0 > /sys/class/gpio/gpio9/value");       
    8.         usleep(100*1000);

    9. }
    复制代码

    看看效果:
    3.gif
    我们也可以用这个方法点亮板上的LED灯:
    1. while(1)
    2.         {
    3.         system("echo 1 > /sys/class/leds/user/brightness");               
    4.         usleep(100*1000);
    5.         system("echo 0 > /sys/class/leds/user/brightness");       
    6.         usleep(100*1000);

    7.         }
    复制代码


    看看效果:
    4.gif

    今天心情不错
    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    2023-2-15 00:12
  • 签到天数: 969 天

    连续签到: 1 天

    [LV.10]以坛为家III

    175

    主题

    2843

    帖子

    34

    金牌会员

    Rank: 6Rank: 6

    积分
    7124
    最后登录
    2023-4-20
    发表于 2018-7-11 09:53:15 | 显示全部楼层
    感谢分享!
    回复

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-8-11 02:53 , Processed in 0.081213 second(s), 21 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表