本页面只读。您可以查看源文件,但不能更改它。如果您觉得这是系统错误,请联系管理员。
系统下操作 UART 的测试串口,以 COM2 测试为例: COM2 设备节点为: /dev/ttyXRUSB0 C参考UART高低电平输入代码如下: <code C> #include <stdio.h> #include <stdlib.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <unistd.h> #include <string.h> static char gpio_path[100]; static int gpio_config(const char *attr, const char *val) { char file_path[100]; int len; int fd; sprintf(file_path, "%s/%s", gpio_path, attr); if (0 > (fd = open(file_path, O_WRONLY))) { perror("open error"); return fd; } len = strlen(val); if (len != write(fd, val, len)) { perror("write error"); close(fd); return -1; } close(fd); //关闭文件 return 0; } int main(int argc, char *argv[]) { char file_path[100]; char val; int fd; /* 校验传参 */ if (2 != argc) { fprintf(stderr, "usage: %s <gpio>\n", argv[0]); exit(-1); } /* 判断指定编号的 GPIO 是否导出 */ sprintf(gpio_path, "/sys/class/gpio/gpio%s", argv[1]); if (access(gpio_path, F_OK)) {//如果目录不存在 则需要导出 int len; if (0 > (fd = open("/sys/class/gpio/export", O_WRONLY))) { perror("open error"); exit(-1); } len = strlen(argv[1]); if (len != write(fd, argv[1], len)) {//导出 gpio perror("write error"); close(fd); exit(-1); } close(fd); //关闭文件 } /* 配置为输入模式 */ if (gpio_config("direction", "in")) exit(-1); /* 极性设置 */ if (gpio_config("active_low", "0")) exit(-1); /* 配置为非中断方式 */ if (gpio_config("edge", "none")) exit(-1); /* 读取 GPIO 电平状态 */ sprintf(file_path, "%s/%s", gpio_path, "value"); if (0 > (fd = open(file_path, O_RDONLY))) { perror("open error"); exit(-1); } if (0 > read(fd, &val, 1)) { perror("read error"); close(fd); exit(-1); } printf("value: %c\n", val); /* 退出程序 */ close(fd); exit(0); } </code> 交叉编译源码: aarch64-linux-gnu-gcc -o uart uart.c 将编译好的程序使用 scp 拷贝到 3399 主板上,执行测试: {{:arm:rk3399:linux:r39s2_uarc.c.png?600|}}
您的足迹:
登录
文章
讨论
阅读
显示源文件
修订记录
搜索
导航
首页
Main_En
帮助
联系我们
打印/导出
可打印版本
工具
最近更改
媒体管理器
网站地图
永久链接
引用此文