历史上的今天
今天是:2024年12月24日(星期二)
2020年12月24日 | 在 S5PV210 的 开发板上 点亮 一个 LED 灯
2020-12-24 来源:eefocus
材料:首先 准备一个 安装好 Linux 的 开发板
使用 xshell 工具 连接 开发板 ,winscp 工具 连接 开发板 , 准备 一个 Ubuntu 32位 ,装上 交叉编译链。。
使用下面 代码 和 Makefile 文件 进行编译 ,生成的 执行 文件 利用 winscp 软件复制到 Linux开发板上 ,利用 xshell 运行 这个可执行文件。
下面 代码的 功能 是 新建 一个 TCP 客户端 连接服务器 (Windows上 的一个 网络 调试工具 NetAssist.exe ,简称网络调试助手 ,类似串口工具)
注意 其中: #define LED_PATH "/sys/devices/platform/x210-led" 是 开发板 中 led 的路径
#include #include #include #include #include #include #include #include #include //socket 头文件 2017年6月28日09:40:47,所长 #include #include #include #include #include #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[40],data[2]; int fd, ret, flag; strcpy(path, LED_PATH); if ( ledNumber == 1 ) strcat(path, "/led1"); else if( ledNumber == 2 ) strcat(path, "/led2"); else if( ledNumber == 3 ) strcat(path, "/led3"); else if( ledNumber == 4 ) strcat(path, "/led4"); else return -1; printf("打开路径%s文件",path); fd = open(path, O_RDWR);//打开/sys/devices/platform/x210-led路径下的 led ledNumber 文件 if( fd < 0 ) //判断是否打开失败 { perror("open"); return -2; } else { printf("led%d 文件打开成功.rn",ledNumber); } if( ledOperationType == 1) ret = write(fd, OPEN_LED, strlen(OPEN_LED) );//文件写入内容: OPEN_LED else if( ledOperationType == 0) ret = write(fd, OFF_LED, strlen(OFF_LED) ); //文件写入内容: OFF_LED else return -3; if( ret < 0 ) { perror("write"); return -4; } else { flag =1; printf("led%d 文件写入ledOperationType(1:打开LED 0:关闭LED): %d 数据成功.rn",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("关闭文件,退出进程!rn"); close(fd);//文件写入完毕后 要进行关闭文件 return 0; } int main(int argc, char *argv[]) { int flag =0 ; int conn_sock; struct sockaddr_in server_addr; char tempBuffer[64] ={0}; 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, 0); if (conn_sock < 0) { perror("socket(2) error"); goto create_err; } else { printf("socket 创建成功 .rn"); } if (connect(conn_sock,(struct sockaddr *)&server_addr,sizeof(server_addr)) < 0) { perror("connect(2) error"); printf("连接服务器IP:%s 端口号:%d 连接失败 .rn",SERVER_IP,SERVER_PORT); //goto err; } else { printf("连接服务器IP:%s 端口号:%d 连接成功 .rn",SERVER_IP,SERVER_PORT); } for(;;) { if ( read( conn_sock, tempBuffer, sizeof(tempBuffer) ) < 0) { perror("receive data error"); printf("接收数据失败.rn"); //goto err; } //printf("接收的数据是:%sn", tempBuffer); led( tempBuffer[0] - 0x30, tempBuffer[1] - 0x30 ); sprintf(tempBuffer,"LED%c ledOperationType(1:OPEN 0:OFF):%c OK.rn",tempBuffer[0], tempBuffer[1]); if (write(conn_sock, tempBuffer, strlen(tempBuffer)) < 0) { perror("send data error"); //goto err; } } err: close(conn_sock); return -1; create_err: fprintf(stderr, "client error"); return -1; /* 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)
史海拾趣
|
运算放大器在电路中发挥重要的作用,其应用已经延伸到汽车电子、通信、消费等各个领域,并将在支持未来技术方面扮演重要角色。在运算放大器的实际应用中,设计工程师经常遇到诸如选型、供电电路设计、偏置电路设计、PCB设计等方面的问题。在电子工 ...… 查看全部问答> |
|
高压输电线路绝缘子内缺陷带电检测装置专利号:ZL 02 2 40245.4华北电力大学(北京)网上宣传很多,唯有我们学校在生产,望慎重甄别,以防假冒!010-60120676 13601208165 okgod123@126.com 于老师 用电场法原理,整体水平达到国 ...… 查看全部问答> |
|
我们平时的设计用得比较多的是74LS和74HC两个系列的芯片。这里为大家提供一些特殊的74系列芯片资料。 主要包括16个子系列,这些子系列虽然不常用的,但却是很有用的,如果用普通的LS和HC系列满足不了设计需要,不妨看一看这些系列的芯片,很有可能 ...… 查看全部问答> |
|
本帖最后由 paulhyde 于 2014-9-15 09:21 编辑 除电子设计大赛外,有哪些比赛啊!像什么杯之类的,有没有,大家介绍一下啊!聊一下参赛的一下经验啊! … 查看全部问答> |
|
4层板 地平面分割后只在一点连接,两区之间的信号线怎么不跨分割呢?比如单片机出来的脉冲信号有送去给模拟电路的时候。 而且单片机下面的地要怎么分割,除了内置ADC相关的引脚,其它区域都铺数字地吗?类似的,像DAC和ADC要跨分割沟来放可以吗? ...… 查看全部问答> |




