在 S5PV210 的 开发板上 点亮 一个 LED 灯
参考学习教程:周立功嵌入式Linux开发教程-(上册)
材料:首先 准备一个 安装好 Linux 的 开发板
使用 xshell 工具 连接 开发板 ,winscp 工具 连接 开发板 , 准备 一个 Ubuntu 32位 ,装上 交叉编译链。。
使用下面 代码 和 Makefile 文件 进行编译 ,生成的 执行 文件 利用 winscp 软件复制到 Linux开发板上 ,利用 xshell 运行 这个可执行文件。
下面 代码的 功能 是 新建 一个 TCP 客户端 连接服务器 (Windows上 的一个 网络 调试工具 NetAssist.exe ,简称网络调试助手 ,类似串口工具)
注意 其中: #define LED_PATH "/sys/devices/platform/x210-led" 是 开发板 中 led 的路径
#include <stdint.h>
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#include <getopt.h>
#include <fcntl.h>
#include <sys/ioctl.h>
#include <linux/types.h>
#include <string.h> //socket 头文件 2017年6月28日09:40:47,所长
#include <netinet/in.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <errno.h>
#include <stdbool.h> #define LED_PATH "/sys/devices/platform/x210-led" #define OPEN_LED "1"
#define OFF_LED "0" #define LED1 1
#define LED2 2
#define LED3 3
#define LED4 4 #define ledOperationTypeOPEN 1
#define ledOperationTypeOFF 0 #define SERVER_IP "192.168.10.11"
#define SERVER_PORT ((uint16_t)7007) int led(int ledNumber,int ledOperationType)
{ char path[],data[]; int fd, ret, flag; strcpy(path, LED_PATH); if ( ledNumber == )
strcat(path, "/led1");
else if( ledNumber == )
strcat(path, "/led2");
else if( ledNumber == )
strcat(path, "/led3");
else if( ledNumber == )
strcat(path, "/led4");
else
return -; printf("打开路径%s文件",path); fd = open(path, O_RDWR);//打开/sys/devices/platform/x210-led路径下的 led ledNumber 文件 if( fd < ) //判断是否打开失败
{
perror("open");
return -;
}
else
{
printf("led%d 文件打开成功.\r\n",ledNumber);
} if( ledOperationType == )
ret = write(fd, OPEN_LED, strlen(OPEN_LED) );//文件写入内容: OPEN_LED
else if( ledOperationType == )
ret = write(fd, OFF_LED, strlen(OFF_LED) ); //文件写入内容: OFF_LED
else
return -; if( ret < )
{
perror("write");
return -;
}
else
{
flag =;
printf("led%d 文件写入ledOperationType(1:打开LED 0:关闭LED): %d 数据成功.\r\n",ledNumber,ledOperationType);
} /* for(;;)
{ //闪烁 LED1 if( flag == 1 )
{//如果LED灯 是打开的状态 就关闭LED灯
flag = 0;
ret = write(fd, OFF_LED, strlen(OFF_LED) );//文件写入内容: OFF_LED
}
else
{//如果LED灯 是关闭的状态 就打开LED灯
flag = 1;
ret = write(fd, OPEN_LED, strlen(OPEN_LED) );//文件写入内容:OPEN_LED
} sleep(1); } */ printf("关闭文件,退出进程!\r\n"); close(fd);//文件写入完毕后 要进行关闭文件 return ; } int main(int argc, char *argv[])
{
int flag = ; int conn_sock; struct sockaddr_in server_addr; char tempBuffer[] ={}; server_addr.sin_addr.s_addr = inet_addr(SERVER_IP);
server_addr.sin_family = AF_INET;
server_addr.sin_port = htons(SERVER_PORT); conn_sock = socket(AF_INET, SOCK_STREAM, ); if (conn_sock < )
{
perror("socket(2) error");
goto create_err;
}
else
{
printf("socket 创建成功 .\r\n");
} if (connect(conn_sock,(struct sockaddr *)&server_addr,sizeof(server_addr)) < )
{
perror("connect(2) error"); printf("连接服务器IP:%s 端口号:%d 连接失败 .\r\n",SERVER_IP,SERVER_PORT); //goto err;
}
else
{
printf("连接服务器IP:%s 端口号:%d 连接成功 .\r\n",SERVER_IP,SERVER_PORT);
} for(;;)
{
if ( read( conn_sock, tempBuffer, sizeof(tempBuffer) ) < )
{
perror("receive data error"); printf("接收数据失败.\r\n"); //goto err;
} //printf("接收的数据是:%s\n", tempBuffer); led( tempBuffer[] - 0x30, tempBuffer[] - 0x30 ); sprintf(tempBuffer,"LED%c ledOperationType(1:OPEN 0:OFF):%c OK.\r\n",tempBuffer[], tempBuffer[]); if (write(conn_sock, tempBuffer, strlen(tempBuffer)) < )
{
perror("send data error");
//goto err;
}
} err:
close(conn_sock);
return -; create_err:
fprintf(stderr, "client error");
return -; /* for(;;)
{
//闪烁 LED1 if( flag == 1 )
{//如果LED灯 是打开的状态 就关闭LED灯
flag = 0;
led( LED1 ,ledOperationTypeOFF );
}
else
{//如果LED灯 是关闭的状态 就打开LED灯
flag = 1;
led( LED1 ,ledOperationTypeOPEN );
} sleep(1); } */ }
注意 下面 是 Makefile 文件 : 其中 arm-gcc-linux 在 安装交叉 编译器 的时候被我 重定义了 应该是 :arm-none-linux-gnueabi-gcc
CFLAGS += -Wall
obj := led
src := led.c
CC := arm-linux-gcc $(obj): $(src)
$(CC) $(CFLAGS) $^ -o $@ -g .PHONY: clean
clean:
-rm $(obj)
在 S5PV210 的 开发板上 点亮 一个 LED 灯的更多相关文章
- 第一个FPGA工程----点亮开发板上的3个LED灯
第一个FPGA工程----点亮开发板上的3个LED灯 1.新建FPGA工程 开启Quartus2的画面 File--New Project Wizard..指定工程的路径与工程名 指定所使用的FPGA ...
- 点亮一个led灯
/********************************* 代码功能:点亮一个led灯 使用函数: pinMode(引脚号,模式); digitalWrite(引脚号,电平状态); //默认 ...
- 进阶之路(基础篇) - 001 亮一个led灯
/********************************* 代码功能:点亮一个led灯 使用函数: pinMode(引脚号,模式); digitalWrite(引脚号,电平状态); //默认 ...
- 在 S5PV210 的 开发板上 使用 串口 收发信息
参考学习教程:周立功嵌入式Linux开发教程-(上册) 材料:首先 准备一个 安装好 Linux 的 开发板 使用 xshell 工具 连接 开发板 ,winscp 工具 连接 开发板 , 准 ...
- 单片机基础——使用GPIO输出点亮一个LED灯
1. 准备工作 硬件准备 开发板首先需要准备一个小熊派IoT开发板,并通过USB线与电脑连接. 软件准备 需要安装好Keil - MDK及芯片对应的包,以便编译和下载生成的代码,可参考MDK安装教程 ...
- 《STM32CubeMX配置STM32H743XI工程》第一讲《初始化UART,重定义printf函数,点亮一个LED灯》
1.打开STM32CubeMX软件->新建一个工程(软件自行到ST官网下载安装) 2.输入对应的芯片型号(本次基于野火STM32H743XI Pro 开发板)点击Start Project生成项 ...
- linux IMX6 汇编点亮一个LED灯
驱动Linux引脚与驱动STM32其实是一样的,都是在操作寄存器,在相应的寄存器上附上相应的值即可驱动. IMX6U手册上有各个管脚的命名,跟STM32不同,IOMUXC_SW_MUC_CTL_PAD ...
- 第一个程序点亮一个LED灯
#include <reg52.h> // 引用52包文件 可以理解为命名空间 sbit P1_0 = P1^0; // 定义P1管脚0 void main() ...
- 51单片机---点亮一个LED灯
1 程序源码 #include <REGX52.H> `包含51单片机的头文件` sbit led = P0^0; int main(void) { while(1) { led = 1; ...
随机推荐
- SQLHappy微软数据库连接查询操作,对数据的处理和查询
(软件已更新,部分介绍与新版软件有出处) 1.服务连接界面介绍 2.主界面介绍 3.表搜索介绍 4.命令菜单部分介绍 5.插件介绍 6.帮助菜单介绍 7.数据库列表右键菜单 8.数据库结构和数据操作( ...
- JavaScript高级编程———数据存储(cookie、WebStorage)
JavaScript高级编程———数据存储(cookie.WebStorage) <script> /*Cookie 读写删 CookieUtil.get()方法根据cookie的名称获取 ...
- C# 后台解析json,简单方法 字符串序列化为对象,取值
如果后台是一个JSON的字符串格式如下: string str = "{\"Success\":true,\"Msg\":\"成功!\&qu ...
- java中字节流与字符流以及字节流多余字节问题
1.字节流 字节流byte为单位对文件的数据进行写入与读取操作.字节的方式在复制音频图片文件时比较适用,但在对于普通文件的读写上有两大缺陷: 第一,字节流在读取中文字符时,若设定的字节数组长度刚好末尾 ...
- security权限控制
目录 前言 数据库和dimain 静态页面 配置文件 web.xml引入 service校验方法 用户名的获取 不同角色访问控制权限 jsp页面 后台 前言 spring自带角色权限控制框架 用户-角 ...
- D3 JS study notes
如何使用d3来解析自定义格式的数据源? var psv = d3.dsvFormat("|"); // This parser can parse pipe-delimited t ...
- SpringMVC笔记——SSM框架搭建简单实例
落叶枫桥 博客园 首页 新随笔 联系 订阅 管理 SpringMVC笔记——SSM框架搭建简单实例 简介 Spring+SpringMVC+MyBatis框架(SSM)是比较热门的中小型企业级项目开发 ...
- CSMA/CD 3
一.二进制指数类型退避算法 (truncated binary exponential type) 发生碰撞的站在停止发送数据后,要推迟(退避)一个随机时间才能再发送数据. 目的:重传时再次发生碰撞的 ...
- Spring配置文件中的parent与abstract
在看项目的Spring配置文件时,发现消息队列的配置采用了继承方式配置Bean,在这梳理总结一下. 其实在基于spring框架开发的项目中,如果有多个bean都是一个类的实例,如配置多个数据源时,大部 ...
- vue 项目搭建笔记1
1.首先安装node.js(傻瓜式安装,安装路径默认C盘) 2.打开node.js command prompt 3.进入想放项目的文件夹.如D: -->回车 4.进入具体文件夹,如cd wo ...