自学内容网 自学内容网

【北京迅为】《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 前置知识

  1. 怎么控制led灯的亮灭?

以STM32MP157开发板为例,原理图如下图所示,,我们给管脚PE1高电平,电路导通,LED3亮,给PE1低电平,电路不导通,LED3灭。

  1. 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)!