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上的信号名称 .
要指定正在使用哪种模式(强制性),请使用以下函数调用 :
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灯实现灯闪。