如何调用GPIO生成下降沿?
-
譬如调用D1板载16号针角(GPIO10),对应的GPIO_PIN index应该是多少呢?
-
根据帖https://bbs.aw-ol.com/topic/336/的图
GPIO10 SOCNO 为 PB9 对应的 在Tina中的命名规范 PB0 为32 + 9 = 41
所以需要向
/sys/class/gpio/export
写入 41之后会生成 GPIO41 的文件夹
检查
/sys/class/gpio/gpio41/direction
是否为 out如果是,则可以给
/sys/class/gpio/gpio41/value
写入 0 则为低电平 -
-
@mgeekfb 查看原理图 GPIO10 的SOCNO 应该是 PP1
PIN10 才是 PB9 PB9 默认被用作 UART0 当然不可以打开了PP1 对应的编号为 GPIO2021 (因为 PPx 是用芯片扩展出来的 GPIO 默认从2020开始)
-
@bedrock 那么2021该怎么调用呢, export 2021 > export 无效
-
@mgeekfb echo
-
@bedrock
明白了!如果我直接在程序中使用GPIO2021生成下降沿的话,这样用封装好的函数可以吗?#include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> static int GPIO_Point_IN1_fd; #define GPIO_Point_IN1 2021 #define GPIO_Point_Set write(GPIO_Point_IN1_fd, "1", 1) #define GPIO_Point_ReSet write(GPIO_Point_IN1_fd, "0", 1) #define delay_us(x) (usleep(x)) void falling_edge(void) { GPIO_Point_IN1_fd = GPIO_Point_IN1; GPIO_Point_Set; delay_us(100); GPIO_Point_ReSet; }
-
@mgeekfb 不可以,因为我上传的代码没有并入 Tina SDK ,所以你需要包含我的头文件,才能使用我这种方法
-
@bedrock
额...那我应该怎样在程序里实现呢? -
@mgeekfb 然后我的程序是按照上面说过的,打开一个GPIO,检查状态,然后再进行写入,这种逻辑来的,你默认使用的话,推荐也是按照这种方法,防止后面出错
-
@mgeekfb 你先下载我的代码,从 main 函数进入仔细看看
-
@bedrock
您的代码是在?我看帖子里提到了GitHub,可以给我一下github的链接嘛? -
@mgeekfb 好吧,这个是我的问题,我只贴了代码没有上传
-
@bedrock
https://bbs.aw-ol.com/topic/338/用用d1上的gpio-封装好的函数?_=1632734368948
我看您这个里面也是直接用的write函数呀,没有定义它 -
找到了 在这个帖子里
https://bbs.aw-ol.com/topic/349/ -
@mgeekfb 有点旧了,看我在模块中上传的代码
-
@bedrock 我看您在模块里也是直接用的write函数来调整电位?没有关于write的定义了
-
@mgeekfb write 是操作系统的接口,其实在GPIO底层驱动已经写好了
-
@bedrock 嗯嗯,那么我之前那个代码应该是可以的吧?我只用了write函数。
Mmgeekfb 大约5小时之前 譬如调用D1板载16号针角(GPIO10),对应的GPIO_PIN index应该是多少呢? 分享 0 BedRockBedRock 大约5小时之前 根据帖https://bbs.aw-ol.com/topic/336/的图 GPIO10 SOCNO 为 PB9 对应的 在Tina中的命名规范 PB0 为32 + 9 = 41 所以需要向/sys/class/gpio/export 写入 41 之后会生成 GPIO41 的文件夹 检查/sys/class/gpio/gpio41/direction 是否为 out 如果是,则可以给/sys/class/gpio/gpio41/value 写入 0 则为低电平 分享 1 Mmgeekfb 大约4小时之前 @bedrock echo 41 > export 显示Invalid Argument 分享 0 BedRockBedRock 大约4小时之前 @mgeekfb 查看原理图 GPIO10 的SOCNO 应该是 PP1 d93e2c51-fef9-4090-bd76-494a35e3db91-image.png PIN10 才是 PB9 PB9 默认被用作 UART0 当然不可以打开了 PP1 对应的编号为 GPIO2021 (因为 PPx 是用芯片扩展出来的 GPIO 默认从2020开始) 分享 1 Mmgeekfb 大约2小时之前 @bedrock 那么2021该怎么调用呢, export 2021 > export 无效 分享 0 BedRockBedRock 大约2小时之前 @mgeekfb echo 分享 0 Mmgeekfb 大约2小时之前 @bedrock 明白了!如果我直接在程序中使用GPIO2021生成下降沿的话,这样用封装好的函数可以吗? #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> static int GPIO_Point_IN1_fd; #define GPIO_Point_IN1 2021 #define GPIO_Point_Set write(GPIO_Point_IN1_fd, "1", 1) #define GPIO_Point_ReSet write(GPIO_Point_IN1_fd, "0", 1) #define delay_us(x) (usleep(x)) void falling_edge(void) { GPIO_Point_IN1_fd = GPIO_Point_IN1; GPIO_Point_Set; delay_us(100); GPIO_Point_ReSet; }
-
@mgeekfb 不可以 你可以看看我的 fd 是 使用 open 打开了 value 才使用 write 写入的
Copyright © 2024 深圳全志在线有限公司 粤ICP备2021084185号 粤公网安备44030502007680号