完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
每次使用gpio比较麻烦,所以参考教程写了一个gpio的头文价和大家分享一下。
每次只需包含头文件即可调用gpio。 #include #include #include #include #include <time.h> /******************************************************************* nanopi2 gpio库: 整理者:扎哥 *******************************************************************/ #define A 0 #define B 1 #define C 2 #define D 3 #define E 4 /******************************************************************* gpio初始化 gpio_init(B,29,0); * 0 输出 * 1 输入 *******************************************************************/ void gpio_init( char port, char pin, char direc ) { char buf[100]; int fd=-1,i=0; DIR *dir; fd = open( "/sys/class/gpio/export", O_WRONLY ); snprintf( buf, sizeof( buf ), "/sys/class/gpio/gpio%d", port * 32 + pin ); if( ( dir = opendir( buf ) ) == NULL ) { snprintf( buf, sizeof( buf ), "%d", port * 32 + pin ); write( fd, buf, sizeof( buf ) ); } closedir( dir ); close( fd ); snprintf( buf, sizeof( buf ), "/sys/class/gpio/gpio%d/direction", port * 32 + pin ); if( fd = open( buf, O_WRONLY ) ) { printf("%dn",fd); if( direc == 0 ) { i=write( fd, "out", sizeof("out") ); printf( "GPIO %d.%d Outputn", port, pin ); } else { i= write( fd, "in", sizeof("in") ); printf( "GPIO %d.%d Inputn", port, pin ); } } close( fd ); printf( "GPIO %d.%d Init Success..n", port, pin ); } /******************************************************************* gpio电平配置 实例:gpio_write(B,29,1); *******************************************************************/ void gpio_write(char port, char pin, char value) { char buf[100]; int fd=-1,i=0; snprintf( buf, sizeof( buf ), "/sys/class/gpio/gpio%d/value", port * 32 + pin ); if( fd = open( buf, O_WRONLY) ) { if( value == 0 ) { i=write( fd, "0", sizeof("0") ); printf( "GPIO %d.%d Output lown", port, pin ); } else { i=write( fd, "1", sizeof("1") ); printf( "GPIO %d.%d Output highn", port, pin ); } close(fd); } } /******************************************************************* gpio输入读取 实例:int zhage=gpio_read(B,29); *******************************************************************/ int gpio_read( char port, char pin ) { int keyValue=1; char buf[100]; int fd=-1; snprintf( buf, sizeof( buf ), "/sys/class/gpio/gpio%d/value", port * 32 + pin ); fd = open( buf, O_RDONLY ); printf("%dn",fd); if( read( fd, &keyValue, 1) == -1 ) { printf( "PIN%d.%d read errorn", port, pin ); } close(fd); return keyValue-48; } |
|
|
|
只有小组成员才能发言,加入小组>>
370个成员聚集在这个小组
加入小组NanoPi m3适合刷什么系统,刚接触玩,我刷了一个比较卡
5452 浏览 1 评论
7181 浏览 1 评论
4780 浏览 1 评论
【NanoPC-T4试用体验】4、手把手教你从单片机移植驱动到ARM Linux上
7749 浏览 1 评论
【NanoPC-T4试用体验】NanoPC-T4控制步进电机
24599 浏览 1 评论
NanoPi m3适合刷什么系统,刚接触玩,我刷了一个比较卡
5455浏览 1评论
445浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-2 02:26 , Processed in 0.509534 second(s), Total 69, Slave 52 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号