开这个专栏主要是为了记录自己的学习经历,同时督促自己能够按时完成学习任务
如果忘记了一些东西,也能够方便自己以后的查阅(自己的笔记会更精简一些)
下面正式开始:
点亮第一个LED:
1.控制硬件的两种方式

较为简单的设备:通过属性文件进行控制(LED GPIO)
较为复杂的设备:通过设备节点方式进行控制(LCD 触摸屏 摄像头)
2.点亮一个LED
LED在/dev目录下没有对应的节点 因此只能用/sys(属性文件)进行操控
具体位置在/sys/class/leds
Mp157有两个LED灯,分别为:/sys/class/leds/user-led /sys/class/leds/sys-led
控制LED的三个属性文件:
Brightness:亮度等级(GPIO的只有1(亮)和0(灭)两种等级)
Max_brightness:LED的最大亮度(只可读)
Trigger:触发模式(常用:none(无触发)、mmc0(当对 mmc0设备发起读写操作的时候 LED 会闪烁)、timer(定时器控制的亮灭)、heartbeat(心跳呼吸模式)
3.正式编写LED控制代码
先定义宏:
LED_TRIGGER:控制LED的触发模式的属性文件
LED_BRIGHTNESS:控制LED的亮度控制的属性文件

如果传参数目大于两个 那么调用USAGE用于打印程序

打开两个控制LED的属性文件,均使用可读可写的方式(fd1为触发模式 fd2为亮度设置)

利用字符串比较函数strcmp,判断传参进行相应的属性文件写入
传参1:on向fd2写入1 off向fd2写入0 (fd1均为none(无触发模式))
传参1:trigger则将第二个传参(触发模式)写入fd1中

4.开发板上测试
(1)利用交叉编译器,将该文件编译成32位ARM架构的可执行文件

该文件名字为:testApp
(2)将可执行文件拷贝到开发板的根文件系统中(推荐使用scp 命令)
(3)在根文件系统中测试程序:

3631

被折叠的 条评论
为什么被折叠?



