在 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; ...
随机推荐
- spring boot包扫描不到controller层
启动类代码 package com.maven.demo; import org.mybatis.spring.annotation.MapperScan; import org.springfram ...
- jQuery轮播图(二)利用构造函数和原型创建对象以实现继承
本文是在我开始学习JavaScript继承时,对原型继承的一些理解和运用.文中所述的继承方式均是使用js特有的原型链方式,实际上有了ES6的类之后,实现继承的就变得十分简单了,所以这种写法现在也不在推 ...
- jquery尺寸和jQuery设置和获取内容方法
一.jquery尺寸 jQuery 提供多个处理尺寸的重要方法: width() 设置或返回元素的宽度(不包括内边距.边框或外边距),括号中可填数值宽度参数,无单位 height() 设置或 ...
- PRINCE2考试用什么语言?
PRINCE2考试可用英语之外的阿拉伯语.中文.日语.马来西亚/印度尼西亚语.泰国语.越南语.菲律宾语.波兰语和盖尔语等9种语言进行. PRINCE2手册目前已有英文.中文.丹麦语和日语,正在翻译成荷 ...
- python错误和异常(1)
1 SyntaxError: Python解释器语法错误,是唯一不是在运行时发生的异常. 2 检测和处理异常 try语句有两种主要形式:try-except 和 try-finally. 只能二选一 ...
- linux下安装rar以及rar相关命令参数详解
Linux平台默认是不支持RAR文件的解压,需要安装Linux版本的RAR压缩软件,下载地址:http://www.rarlab.com/download.htm 下载之后进行解压之后,进入rar目录 ...
- Vscode rg.exe cpu 占用过高
文件-> 首选项 -> 设置 -> 搜索search.followSymlinks 或者 修改settings.json 添加 "search.followSymlinks ...
- Windows系统通用安全配置基线
一:共享账号检查 配置名称:账号分配检查,避免共享账号存在 配置要求: 1.系统需按照实际用户分配账号: 2.根据系统的使用需求,设定不同的账户和账户组,包括管理员用户,数据库用户,审计用户,来宾用户 ...
- 月报 提取/保存 到OneDrive. 并发送反馈邮件
- January 07 2017 Week 1st Saturday
Procrastination is the thief of time. 拖延乃是光阴之窃贼. My parents always tell me that things ought to be d ...