【正点原子RV1126 AI Linux开发板】 GPIO输出测试
[复制链接]
本帖最后由 TL-LED 于 2024-2-1 21:24 编辑
学习下测试RV1126的GPIO输出测试,点亮LED灯。
一、硬件电路
测试使用GPIO0_A1端口
核心板部分 GPIO0_A1端口电平电路
端口输出电平是1.8V,为了方便测试常用的3.3V外设,加入电平转换电路
二、程序
2.1、gpio_out.c
/***************************************************************
Copyright © ALIENTEK Co., Ltd. 1998-2021. All rights reserved.
文件名 : pwm.c
作者 : 邓涛
版本 : V1.0
描述 : GPIO应用编程示例代码--输出
其他 : 无
论坛 : www.openedv.com
日志 : 初版 V1.0 2021/6/15 邓涛创建
***************************************************************/
#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[])
{
int arg=0;
char val=0;
/* 校验传参 */
/*if (3 != argc) {
fprintf(stderr, "usage: %s <gpio> <value>\n", argv[0]);
exit(-1);
}*/
//argv[1]=0;
/* 判断指定编号的GPIO是否导出 */
//sprintf(gpio_path, "/sys/class/gpio/gpio%s", argv[1]);
sprintf(gpio_path, "/sys/class/gpio/gpio1");
if (access(gpio_path, F_OK)) {//如果目录不存在 则需要导出
int fd;
int len;
if (0 > (fd = open("/sys/class/gpio/export", O_WRONLY))) {
perror("open error");
exit(-1);
}
arg=1;
len = strlen(argv[1]);
//if (len != write(fd, argv[1], len)) {//导出gpio
if (1 != write(fd, &arg, 1)) {//导出gpio
perror("write error");
close(fd);
exit(-1);
}
close(fd); //关闭文件
}
/* 配置为输出模式 */
if (gpio_config("direction", "out"))
exit(-1);
/* 极性设置 */
if (gpio_config("active_low", "0"))
exit(-1);
for(arg=0;arg<5;arg++){
//val=0;
gpio_config("value", "0");
sleep(1);
//val=1;
gpio_config("value", "1");
sleep(1);
}
/* 控制GPIO输出高低电平 */
/*if (gpio_config("value", argv[2]))
exit(-1);*/
/* 退出程序 */
exit(0);
}
2.2、编译程序
编译需要用到工具arm-linux-gnueabihf-gcc
第一次编译,系统没有安装此工具需要安装,执行安装命令:sudo apt-get install arm-linux-gnueabihf-gcc
编译:hui@ubuntu:/opt/atk-rv1126_app/gpio$ sudo arm-linux-gnueabihf-gcc -o gpio_out gpio_out.c
复制文件到开发板:hui@ubuntu:/opt/atk-rv1126_app/gpio$ scp gpio_out root@192.168.1.21:/opt
2.3、程序运行
开发板下执行命令:[root@ATK-DLRV1126:/opt]# ./gpio_out
gpio_out
|