【北京迅为】《STM32MP157开发板嵌入式开发指南》-第二十九章 点亮第一个 led灯
iTOP-STM32MP157开发板采用ST推出的双核cortex-A7+单核cortex-M4异构处理器,既可用Linux、又可以用于STM32单片机开发。开发板采用核心板+底板结构,主频650M、1G内存、8G存储,核心板采用工业级板对板连接器,高可靠,牢固耐用,可满足高速信号环境下使用。共240PIN,CPU功能全部引出:底板扩展接口丰富底板板载4G接口(选配)、千兆以太网、WIFI蓝牙模块HDMI、CAN、RS485、LVDS接口、温湿度传感器(选配)光环境传感器、六轴传感器、2路USB OTG、3路串口,CAMERA接口、ADC电位器、SPDIF、SDIO接口等
第二十九章 点亮第一个 led灯
我们学 linux 、单片机的第一个操作硬件就是点亮第一个led灯。
在单片机上我们点亮一个led灯非常的简单,直接操作引脚就可以了。虽然linux听着比较高大上,但是点亮一个led灯是非常容易的。我们甚至不用去写驱动,直接命令操作就可以了,因为linux系统本身有好多成熟的驱动框架,使用这些框架的好处就是当我们更换平台的时候,比如换到RK3399平台,我们应用程序可以不用做任何改变,就可以直接在新的平台上运行。但是如果你在单片机上写一个点灯程序,比如说我在32上写了一个点灯我现在想把它移植到51上那这个移植过程是比较麻烦的,如果说用寄存器写的就要改寄存器,如果说用库函数写的移植到51上也要写对应的库函数,这就比较麻烦了,但是在linux上直接使用命令就可以了。对于led设备,linux 提供的是 led子系统框架。
29.1 前置知识
- 怎么控制led灯的亮灭?
以STM32MP157开发板为例,原理图如下图所示,,我们给管脚PE1高电平,电路导通,LED3亮,给PE1低电平,电路不导通,LED3灭。
- echo > 重定向命令
举例:
echo hello > test.txt
将字符串输出重定向,当前目录没有 test.txt,则创建 text.txt ,并将字符串输出到 test.txt 文件中。和直接使用vi编辑器打开 test.txt然后输入hello 的效果是一样的。如下图所示。
29.2 led设备的控制
我们在超级终端上使用命令 “cd /sys/bus/platform/devices/led/leds/user1”进入led3的设备信息目录,如下图所示:
我们使用以下命令来进行对小灯的操作,如下图所示:
打开led3:
echo 1 > brightness
关闭led2:
echo 0 > brightness
使用led设备节点我们可以很方便的控制我们的led灯,不管是什么平台,包括3399 、4418、 6818 、i.MX6ull都可以使用这个方法,这个方法是通用的。在单片机上是使用程序来控制的,我们在这里使用命令,其实我们也可以使用程序来控制,因为我们有的时候是在程序上点灯,而不是需要我们去手动输入命令。
29.3 使用c语言调用shell命令控制led灯
用命令来控制 led灯没有感觉,那可以使用程序来控制,让程序帮我们输入这些命令,我们可以使用system 函数来完成。
头文件:#include <stdio.h>
格式:system(要执行的命令)
代码实现:
#include <stdio.h>
int main(void)
{
while(1)
{
system("echo 1 > /sys/bus/platform/devices/led/leds/user1/brightness");//点亮RED
sleep(5);
system("echo 0 > /sys/bus/platform/devices/led/leds/user1/brightness");//关闭RED
sleep(5);
}
}
我们来写一下这个程序,在Ubuntu上创建c程序,名为led.c,我们进入到while循环,我们不断的给RED进行置0 置1 ,我们把这个延迟改小一点,改成1秒,然后保存,如下图所示。
我们直接使用交叉编译器编译下hello.c ,因为是在开发板上运行的,所以就不能使用gcc了。我们使用静态编译,这样就得到了hello这个可执行的程序。如下图所示。
把这个可执行文件拷贝到开发板我们可以使用U盘或者TF卡也可以使用NFS ,这个依据自己的习惯来就可以了。我这里使用U盘 。进到开发板的控制终端,挂载U盘,进到挂载目录,如下图所示:
我们来运行下这个可执行文件,如下图所示。
可以看到开发板现在RED这个灯的状态,来执行下这个可执行文件,这个灯就是一闪一闪的了,然后我们使用ctrl+c打断这个程序的运行,这个灯现在已经不亮了
然后我们在运行下,这样我们就使用程序成功控制了一个灯并实现了一个闪灯的程序,其实这个程序里面的方法和我们直接使用命令的方法是一样的,只不过我们是使用c语言来调用我们的shell命令来实现,就不用再人为的输入了。
原文地址:https://blog.csdn.net/BeiJingXunWei/article/details/142823844
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!