Jetson orin nano 使能 GPIO C++

Jetson orin nano 使能 GPIO C++

参考: Jetson Nano 入坑之路 ---- (6)GPIO使用(C/C++)

1. 获取JetsonGPIO库

git clone https://github.com/pjueon/JetsonGPIO

cd JetsonGPIO
mkdir build
cd build
cmake -DCMAKE_INSTALL_PREFIX=/usr -DBUILD_EXAMPLES=ON ..
sudo make install

2. 常用函数

2.1 GPIO引脚模式

Jetson 开发板引脚表

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

2.2 引脚配置


通道作为输入,调用:
// (where channel is based on the pin numbering mode discussed above)
GPIO::setup(channel, GPIO::IN); // channel must be int or std::string
GPIO::setup(channel, GPIO::OUT);

还可以为输出通道指定初始值:
GPIO::setup(channel, GPIO::OUT, GPIO::HIGH);

2.3 输入输出


int value = GPIO::input(channel);
这将返回 GPIO::LOW(== 0) 或 GPIO::HIGH(== 1)


GPIO::output(channel, state);

2.4 清理工作

/* 在程序结束时,最好清理通道,以便所有引脚都设置为默认状态。 */
GPIO::cleanup();


GPIO::cleanup(chan1); // cleanup only chan1

3. 示例代码

运行要加上sudo

sudo ./PinControl

  • main.cpp

#include <iostream>
#include <JetsonGPIO.h>

using namespace std;

class PinCtr {
private:
    int pin_ = 4;
    
public:
    PinCtr() {
        GPIO::setmode(GPIO::BOARD);
    }
    
    void setPin(int pin_num, int status) {
        pin_ = pin_num;
        GPIO::setup(pin_, GPIO::OUT);
        GPIO::output(pin_, status);
    }

    ~PinCtr() {
        cout << "~PinCtr" << endl;
        GPIO::cleanup();
    }
};

int main(int argc, char **argv) {
    if (argc != 3) {
        cout << "Usage : " << argv[0] << " <pin> <status> " << endl;
        cout << "1 : GPIO::HIGH, 0 : GPIO::LOW" << endl;
        return -1;
    }

    PinCtr pin;

    int pin_num = stoi(argv[1]); // 将字符串转换为整数
    int status = stoi(argv[2]);  // 将字符串转换为整数

    pin.setPin(pin_num, status);

    return 0;
}

  • CMakeLists.txt

    cmake -S . -B build
    cmake --build build
    
cmake_minimum_required(VERSION 3.10)

# 设置项目名称
project(PinControl)

# 设置C++标准
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED True)

# 添加源文件
add_executable(PinControl main.cpp)

# 链接JetsonGPIO库
target_link_libraries(PinControl JetsonGPIO)
  • 常规编译
g++ main.cpp -o PinControl -lJetsonGPIO
  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值