本次内容:
有了上篇Debian下GPIO调用的讲解,接下来就可以将其应用在程序中了,本篇实现了在Debian下对改进后小车的驱动。
工具:
NanoPi2,万用表,小车,数据线,移动电源。
过程笔记:
在linux系统中,对文件的操作是通过fcntl.h文件中的open()、close()、read()、write()函数完成的,它们的作用:
open():打开文件。
close():关闭文件。
read():以字符串形式读取文件内容。
write():以字符串形式写入文件。
因而,首先需要在我的测试程序car.c中包含fcntl.h头文件,并定义我要操作的gpio文件:
还需要一个初始化函数,来使能我用到的这些端口,上次裸机测试用到的端口是:
这次依旧用这些:
open()函数有3个参数,第一个是要打开的文件,第二个是对打开文件的操作类型,第三个是打开权限,在这里,我要通过export文件使能用到的4个端口,对文件的操作类型是只读,将打开权限设置为“0666”。
对于文件的权限,在linux中由用户、群组、其他几种等级,每个等级都有读权限、写权限、执行权限几种。可读用二进制100表示,可写用二进制010表示,可执行用001表示。在这个实例中要将文件设置为可读、可写,也就是100+010,即110,将二进制110转化为十进制即为6,关于文件的权限设置,由4位数表示,0666就是将用户、群组、其他的权限都设置为可读、可写。否则会在读写export、direction、value文件时就会出现错误。
还需要将对文件的操作,封装成一个函数,便于在main函数中调用:
gpio()函数会从调用它的函数中得到文件路径和要写入的字符串两个参数,执行完后,关闭文件。接下来是主函数:
在初始化成功后,会提示“小车开始运动”,通过for循环来延时,并通过gpio_set函数来设置GPIO的高低电平。
实际操作下,在终端执行: