JetsonGPIO(C++)

JetsonGPIO(C++)

这是NVIDIA官方Jetson GPIO Python库到C ++的非官方移植。
NVIDIA’s official Jetson GPIO Python library: https://github.com/NVIDIA/jetson-gpio

该库提供与NVIDIA Jetson GPIO Python库几乎相同的API

**但是它不支持NVIDIA原始版本的所有功能 **

一、环境搭建

1、从https://github.com/pjueon/JetsonGPIO下载资源包,在本地进行安装:
cd JetsonGPIO/build
make all
sudo make install
2、获取用户权限

为了使用Jetson GPIO库,必须具有正确的用户权限/组 首先设置。 或者,您必须在具有root权限的情况下运行程序。

sudo groupadd -f -r gpio
sudo usermod -a -G gpio your_user_name
3、通过将99-gpio.rules文件复制到rules.d中来安装自定义udev规则 目录。
sudo cp JetsonGPIO/99-gpio.rules /etc/udev/rules.d/
4、为了使新规则生效,需要通过运行以下命令重新引导或重新加载udev规则:
sudo udevadm control --reload-rules && sudo udevadm trigger

具体使用

该库提供与NVIDIA Jetson GPIO Python库几乎相同的API。

1. 关于库的说明

包含jetsonGPIO,可引用:

#include <JetsonGPIO>

所有公共API在名称空间“ GPIO”中声明。 如果要缩短代码,可以使用 :

using namespace GPIO; // optional

编译程序使用:

g++ -o your_program_name your_source_code.cpp -lJetsonGPIO
2. 引脚说明

Jetson GPIO库提供了四种给I / O引脚编号的方法。 前两个对应于RPi.GPIO库提供的模式,即BOARD和BCM,分别表示40引脚GPIO接头连接器的引脚号和Broadcom SoC GPIO编号。 其余两种模式,CVM和TEGRA_SOC使用字符串代替数字,分别对应于CVM / CVB连接器和Tegra SoC上的信号名称 .

JetsonGPIO(C++)

要指定正在使用哪种模式(强制性),请使用以下函数调用 :

GPIO::setmode(GPIO::BOARD);
// or
GPIO::setmode(GPIO::BCM);
// or
GPIO::setmode(GPIO::CVM);
// or
GPIO::setmode(GPIO::TEGRA_SOC);

要检查已设置的模式:

GPIO::NumberingModes mode = GPIO::getmode();

3. 使用

设置GPIO模式

GPIO::setmode(GPIO::BOARD)

在用作输入或输出之前,必须先设置GPIO通道。 要将通道配置为输入:

GPIO::setup(channel, GPIO::IN); // channel must be int or std::string

设置为输出:

GPIO::setup(channel, GPIO::OUT);

可以为输出通道指定初始值:

GPIO::setup(channel, GPIO::OUT, GPIO::HIGH);

4. 输入

定义GPIO为输入:

int value = GPIO::input(channel);

5. 输出

定义接口为输出:

GPIO::output(channel, state);

6. Clean up

在程序结束时,最好清理通道,以便将所有引脚设置为默认状态:

GPIO::cleanup();

清理单个通道:

GPIO::cleanup(chan1); // cleanup only chan1
7、检查提供的GPIO通道的功能:
GPIO::Directions direction = GPIO::gpio_function(channel);

示例代码请见JetsonGPIO-master\samples\simple_out.cpp,可接led灯实现灯闪。

上一篇:zabbix4.0监控gpu


下一篇:Nvidia关机后自动释放授权