打印
[技术讨论]

在全志H616核桃派开发板上进行基于WiringPi的IO控制

[复制链接]
636|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
神棍地海棠|  楼主 | 2024-5-17 09:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
GPIO指令[color=var(--ifm-link-color)]​
WiringPi对核桃派的物理引脚进行了封装,定义了一套自己的引脚编号,为了保证代码兼容性,目前核桃派的wPi引脚定义和树莓派一致。
详细操作方式请点击查看:[color=var(--ifm-link-color)]GPIO指令操作 章节内容,这里不再重复。
编译和运行C代码[color=var(--ifm-link-color)]​
我们来体验一下WirngPi的编译和运行方法,先在核桃派当前目录新建一个test.c文件,输入下面内容(该代码实现在终端打印“Hello WalnutPi信息”):
[color=var(--prism-color)]#include <stdio.h>

int main (void)
{
  printf ("Hello WalnutPi\n") ;

  return 0 ;
}



编译代码,由于WiringPi是以动态库存在,所以编译要加上-lwiringPi。下面指令表示将当前目录下的test.c文件编译成可执行文件test。
[color=var(--prism-color)]gcc -Wall -o test test.c -lwiringPi



运行刚刚编译出来的程序:
[color=var(--prism-color)]sudo ./test



可以看到执行后终端打印出:Hello WalnutPi信息:
Geany IDE (核桃派本地)[color=var(--ifm-link-color)]​
核桃派桌面系统出厂预装了Geany IDE ,位于开始--开发栏,使用Geany可以实现C编程和编译运行。
打开Geany:
新建一个文件,输入下面的测试代码,保存为.c文件。
[color=var(--prism-color)]#include <stdio.h>

int main (void)
{
  printf ("Hello WalnutPi\n") ;

  return 0 ;
}



然后配置带WiringPi的C代码编译和生成命令。打开生成--设置生成命令 :
在Build命令最后的地方加入 -lwiringPi (注意区分大小写)。这个命令用于生成可执行文件,加入后完整命令为:
[color=var(--prism-color)]gcc -Wall -o "%e" "%f" -lwiringPi



在Execute命令前面加入 echo "root" | sudo -S (注意区分大小写)。这个命令用于运行前面生成的可执行文件(程序),加入后完整命令为:
[color=var(--prism-color)]echo "root" | sudo -S "./%e"



配置完成后点击Build按钮,下方可以看到编译结果信息。编译成功的话当前目录下会生成一个可执行文件。
再点执行按钮,可以看到弹出一个新终端,打印了“Hello WalnutPi”信息,说明代码被成功编译和执行。
VSCode IDE(ssh远程)[color=var(--ifm-link-color)]​
除了使用核桃派自带Geany IDE外,这里说一下使用VSCode IDE 远程操作方法。关于VScode IDE远程方法请参考: [color=var(--ifm-link-color)]VSCode IDE(ssh远程) 章节内容,这里不再重复。
VScode IDE需要在终端下使用命令来编译,好处是C编程比较直观,而且可以远程操作:
编写代码:
[color=var(--prism-color)]gcc -Wall -o test test.c -lwiringPi



执行程序:
[color=var(--prism-color)]sudo ./test



IO控制[color=var(--ifm-link-color)]​点亮第1个LED[color=var(--ifm-link-color)]​[color=var(--prism-color)]/*
实验名称:点亮第1个LED
实验平台:核桃派
说明:点亮核桃派开发板上的LED
*/

#include <stdio.h>
#include <wiringPi.h>

// 核桃派的板载LED引脚wPi编码为33
#define LED 33

int main (void)
{
  printf ("WalnutPi LED\n") ;

  wiringPiSetup () ;

  pinMode (LED, OUTPUT) ;

  digitalWrite (LED, HIGH) ;    //点亮,LOW熄灭。

  return 0 ;
}




按键[color=var(--ifm-link-color)]​[color=var(--prism-color)]/*
实验名称:按键
实验平台:核桃派
说明:按键按下点亮LED,松开熄灭LED
*/

#include <stdio.h>
#include <wiringPi.h>


// 核桃派的板载LED引脚wPi编码为33,按键KEY为32
#define LED 33
#define KEY 32

int main (void)
{
  printf ("WalnutPi Pi KEY\n") ;

  wiringPiSetup () ;

  pinMode (LED, OUTPUT) ;

  pinMode (KEY, INPUT) ;
  pullUpDnControl (KEY, PUD_UP) ; //开启上拉电阻

  while (1)
  {
    if(digitalRead (KEY) == LOW) // 按键按下
    {
      digitalWrite (LED, HIGH) ;    // 点亮LED
    }

    else
    {
      digitalWrite (LED, LOW) ; // 熄灭LED
    }
  }

  return 0 ;

使用特权

评论回复

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

262

主题

270

帖子

0

粉丝