野火【第一期】Linux系列教学视频之“零基础入门”篇,手把手教学,从0开始,基于野火i.MX6ULL Pro/MINI开发板
这次和上次不一样,上次使用的是驱动程序中的led子系统,而这次是使用GPIO子系统。
LED子系统已经把硬件的操作接口导出到用户空间了,但是GPIO子系统并没有帮我们把控制蜂鸣器的GPIO接口导出到用户空间,我们需要手动去导出
首先我们从原理图上找出需要导出的GPIO引脚
可以看到GPIO1_19,1表示组号,19是组内的编码(对于i.MX6ull来说)
GPIO1_19在linux系统中的引脚编号规则:(组号-1)*32+组内引脚编码,即19
导出GPIO子系统硬件操作接口方法:在/sys/class/gpio/export中把引脚编号写进去就可以
可以看到开发板的系统中,GPIO文件夹下并没有19的操作接口,但是有export
直接sudo echo 19 > /sys/class/gpio/export
就可以看到GPIO19
进去后可以看到以下文件,我们重点关注direction和value
direction主要用来控制GPIO19的输入输出模式,当设置in时,GPIO19出于输入模式,设置为out时成为输出模式。
value表示,在输出模式时,将其置1表示此芯片输出高电平,value为0时,芯片输出底电平
搞清楚在用户空间的接口后,控制其就非常简单了
控制程序
打开includes头文件文件夹中的bsp_beep.h
#ifndef是防止头文件包含的宏定义
看sources文件夹,包含bsp_beep.c和main.c文件
看bsp_beep.c
初始化蜂鸣器函数:只写模式打开export文件,向其写入芯片引脚值(该常量即19定义在头文件中)
打开 导出的文件夹的direction文件,写入out
往unexport中写入19即是去掉我们在用户空间的硬件操作接口
开启和关闭蜂鸣器
再来看main.c文件
调用之前的函数
while里循环等待输入
Makefile
改了名字和路径
最后没有gcc的命令,好像是自动编译的吧,,